당신은 새 음식점을 개업하려고 한다. 도시는 크기가 M×M인 격자로 나타낼 수 있다. 모든 도로는 수직 또는 수평이고, 각 방향의 도로에는 0번부터 M−1번까지 번호가 매겨져 있다. 모든 음식점은 교차로에 있으며, 교차로는 (수직 도로 번호, 수평 도로 번호) 쌍인 좌표 (x,y)로 나타낸다. 두 교차로 (x1,y1)과 (x2,y2) 사이의 거리는 ∣x1−x2∣+∣y1−y2∣이다.
도시에는 큰 아파트가 두 개 있고, 두 아파트 A와 B는 같은 수평 도로 위에 있다(즉 y 좌표가 같다). 두 아파트에는 이미 음식점이 있다.
두 아파트에 사는 사람들이 자주 만나기 때문에, 당신은 새 음식점을 두 아파트 사이의 알맞은 자리에 두려고 한다. 하지만 이미 있는 음식점과 임대료를 고려하면 정중앙이 항상 가장 좋은 것은 아니다. 그래서 다음 조건을 만족하는 "좋은 곳"을 찾으려고 한다. 여기서 dist(p,q)는 p와 q 사이의 거리이다.
교차로 p가 "좋은 곳"이 되려면, 이미 있는 모든 음식점 q에 대해 dist(p,A)<dist(q,A) 또는 dist(p,B)<dist(q,B)를 만족해야 한다. 바꿔 말하면, dist(p,A)≥dist(q,A)이면서 동시에 dist(p,B)≥dist(q,B)인 음식점 q가 하나라도 있으면 p는 "좋은 곳"이 아니다.
비교 대상 q에는 두 아파트 A, B에 있는 음식점도 포함된다.
예를 들어 아파트가 A=(0,5), B=(10,5)인 11×11 도시를 생각하자.
이미 있는 음식점들의 위치가 주어졌을 때, 도시의 모든 교차로 M×M개 중 "좋은 곳"의 개수를 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 도시의 크기 M과 음식점의 수 N이 주어진다(2≤M≤60000, 2≤N≤50000). 이어지는 N개의 줄에는 각 음식점의 좌표 xi, yi가 주어진다(0≤xi,yi<M).
두 음식점의 좌표가 같은 경우는 없다. 아파트 A는 첫 번째 음식점, 아파트 B는 두 번째 음식점의 위치에 있으며, A와 B는 같은 수평 도로 위에 있다.
각 테스트 케이스마다 "좋은 곳"의 개수를 한 줄에 하나씩 출력한다.