주식회사 슈퍼브에이아이 구성원들은 커피값 내기를 하기 위하여 슈퍼브 다트라는 새로운 게임을 만들었다. 슈퍼브 다트의 규칙은 아래와 같다.
2차원 평면 위에 다트판을 그린다.
다트판은 정수 좌표를 가지는 점들을 정점으로 하고 그 사이를 잇는 선분들을 간선으로 하여 만들어지는 그래프이다.
- 서로 다른 정점의 좌표가 같은 경우는 없다.
- 만들어지는 그래프는 단순 그래프(중복 간선이 없음)이며 연결 그래프(임의의 두 정점 사이의 경로가 항상 존재)이어야 한다.
- 서로 다른 선분끼리는 교차하지 않으며 접한다 하더라도 두 선분이 정점을 공유하는 경우에 그 점에서만 접할 수 있다 (평면 그래프를 생각하면 이해가 쉽다.)
이러한 다트판 위에 다트를 던진다고 할때, 한 번의 시행으로 얻게 되는 점수는 다트가 꽂힌 점이 포함되는 영역의 넓이에 반비례한다.
- 다트판에서 어떤 점을 포함하는 영역이란 그 점에서 다트판의 간선들과 교차하거나 접하지 않는 경로로 연결할 수 있는 점들의 집합이다 (여기서의 경로란 그래프상의 경로가 아닌 평면상에서의 경로를 의미한다. 이는 곡선이 될 수도 있다.)
- 넓이가 무한하거나 0인(다트판의 밖 혹은 꼭짓점이나 간선 바로 위에 꽂혔을때) 경우는 영역으로 치지 않으며 0점을 얻게 된다.
호기심이 많은 슈퍼브에이아이 구성원들은 이러한 다트판에서 나올 수 있는 점수들의 조합이 궁금해졌다. 이 궁금증을 해결하기 위해 우선 다트판이 주어졌을때 다트판에 있는 영역의 넓이들을 계산해보려고 한다.
Input
첫 번째 줄에 다트판의 정점의 개수와 간선의 개수 $N, M$ ($1 \le N, M \le 100\,000$) 이 주어진다. 각 정점에는 1부터 $N$까지, 각 간선에는 1부터 $M$까지 순서대로 번호가 붙어 있다.
다음 $N$개의 줄에는 정점들의 좌표가 주어진다. 이 중 $i$번째 줄에는 $i$번 정점의 $x$좌표, $y$좌표가 띄어쓰기로 구분되어 주어진다. 중복된 좌표는 주어지지 않는다. ($-10^6 \le x, y \le 10^6$)
다음 $M$개의 줄에는 다트판의 간선이 주어진다. 이 중 $i$번째 줄에는 $i$번 간선의 양 끝점 $s, e$ 가 주어진다. 양 끝점은 서로 다르며, 임의의 서로 다른 두 간선은 같은 쌍을 잇지 않으며, 최대 하나의 교차점을 가진다. 임의의 서로 다른 두 간선이 하나의 교차점을 가질 경우, 두 간선은 서로 공유하는 양 끝점을 가지며, 두 간선의 교차점은 바로 그 공유된 양 끝점이다. ($1 \le s, e \le N, s \neq e$)
주어진 다트판은 연결되어 있음이 보장된다.
Output
첫 번째 줄에 다트판에 있는 유효한 영역(넓이가 0보다 크고 유한한 경우)의 개수 $S$를 출력한다.
다음 $S$개의 줄에, 해당 영역들의 넓이를 소수점 둘째 자리에서 반올림하여 오름차순으로 출력하라.
Examples
Input 1
5 6 0 0 0 1 0 3 1 1 1 3 1 2 2 3 1 4 2 4 4 5 3 5
Output 1
2 0.5 2.0
Input 2
10 13 2 0 6 4 8 6 2 6 4 2 8 2 0 2 10 2 12 2 12 6 3 2 1 7 10 8 3 6 5 6 2 6 9 10 4 7 6 8 8 9 4 5 1 5 3 4
Output 2
4 4.0 4.0 12.0 16.0