시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
농사는 힘든 일이며, 땅을 사는 것은 그 시작일 뿐이다. 전체 농경지는 단위 정사각형 밭(field) 들로 이루어진 거대한 직사각형 격자이다. 농부는 먼저 초기 밭들의 집합을 사며, 그의 경작지(parcel) 는 처음에는 정확히 이 밭들로 이루어진다. 최종 경작지는 말뚝과 끈을 이용해 다음 과정을 반복하여 정해진다.
경작지는 오직 커지기만 하므로, 경작지가 더 이상 변하지 않을 때까지 위 과정을 반복한다. 이렇게 얻어진 경작지를 최종(final) 경작지라고 한다.
흥미롭게도, 초기 밭들 중 일부만 샀더라도 완전히 같은 최종 경작지에 도달하는 경우가 있다. 초기 밭들의 어떤 부분집합에서 시작했을 때 얻는 최종 경작지가, 초기 밭 전체에서 시작했을 때의 최종 경작지와 정확히 같으면, 그 부분집합을 유효한(valid) 부분집합이라고 한다. 농부는 유효한 부분집합이 몇 개인지 알고 싶어 한다.
입력은 여러 개의 독립적인 테스트 케이스로 이루어져 있으며, 각각을 모두 해결해야 한다.
첫째 줄에 테스트 케이스의 수 Z≤50 가 주어진다. 각 테스트 케이스는 다음 형식으로 주어진다.
각 테스트 케이스의 첫째 줄에는 초기 밭의 수 n≤106 이 주어진다. 이어지는 n 개의 줄에는 각각 두 정수 xi, yi (−109≤xi,yi≤109)가 주어지며, 이는 한 초기 밭의 좌표이다. 한 테스트 케이스 안의 모든 초기 밭은 서로 다르다.
각 테스트 케이스마다, 그 초기 밭들의 유효한 부분집합의 개수를 k 라고 할 때, kmod(109+7) 을 한 줄에 출력한다.