텐트 사역

두 평행선 각각에서 두 점씩 골라 아래 두 각이 모두 예각이거나 위 두 각이 모두 예각인 사다리꼴의 개수를 센다.

보통7기하정렬조합론투 포인터아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

onionpringles는 9월 10일에 마지막 문제를 출제하고 9월 11일에 입대했다. 그가 배치된 부대에는 별난 선임이 많았다. 그가 KAIST 수리과학과를 나왔다는 사실을 알아낸 선임 하나가 이렇게 말했다.

"지금 텐트를 하나 쳐야 하거든? 저기 평행하게 놓인 밧줄 두 개랑 그 위에 군데군데 박혀 있는 말뚝 보이지? 저기서 말뚝 네 개를 골라서 그대로 텐트를 칠 거야. 그런데 우리 부대는 텐트 바닥을 밑각 두 개가 모두 예각이거나 윗각 두 개가 모두 예각인 사다리꼴로 치는 전통이 있어. 전통을 지키는 텐트를 아무거나 계속 만들어 봐. 내 마음에 들면 그만하게 해 줄게."

앞이 캄캄해진 onionpringles는 최악의 경우 서로 다른 텐트를 몇 개나 만들어 봐야 하는지 세기 시작했다. 그를 대신해 서로 다른 텐트의 개수를 세어 주자. 텐트 바닥을 이루는 말뚝의 집합이 같으면 같은 텐트다.

밧줄 두 개는 각각 y=y1y = y_1y=y2y = y_2인 수평선이고, 말뚝은 그 위에 있는 점이다.

위 그림은 간단한 예시다. 위쪽 두 그림은 조건을 만족하지 않고, 아래쪽 두 그림은 조건을 만족한다.

입력

첫 줄에 두 밧줄 위에 있는 말뚝의 개수 NNMM, 두 밧줄의 y좌표 y1y_1y2y_2가 공백을 사이에 두고 주어진다. (2N,M1000002 \le N, M \le 100\,000, 1000000000y1,y21000000000-1\,000\,000\,000 \le y_1, y_2 \le 1\,000\,000\,000, y1y2y_1 \ne y_2)

이어지는 NN개의 줄에는 y=y1y = y_1인 밧줄 위 말뚝의 x좌표가 한 줄에 하나씩 주어지고, 그다음 MM개의 줄에는 y=y2y = y_2인 밧줄 위 말뚝의 x좌표가 한 줄에 하나씩 주어진다. x좌표는 1000000000-1\,000\,000\,000 이상 10000000001\,000\,000\,000 이하의 정수다. 한 밧줄 위에 x좌표가 같은 말뚝이 두 번 주어지는 경우는 없다.

출력

조건을 만족하는 사다리꼴의 개수를 10000000071\,000\,000\,007로 나눈 나머지를 출력한다.