늑대

각 구간마다 최소 한 마리의 늑대가 있어야 한다는 조건을 만족하도록 N개 구역에서 늑대 위치를 고르는 경우의 수를 1,000,000,007로 나눈 나머지로 구한다.

보통7동적 계획법조합론구간누적 합아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

영선이가 서 있는 길에는 늑대가 나타난다. 그래서 영선이는 늑대가 어디에 있을지 매우 조심스럽게 따져 보고 있다.

도로는 NN개의 구역으로 나뉘고, 각 구역에는 00번부터 N1N-1번까지 번호가 붙어 있다. 한 구역에 있을 수 있는 늑대는 최대 한 마리다.

영선이는 늑대에 관한 정보를 MM개 알고 있다. 각 정보는 구간 하나로 이루어지고, 그 구간에 속한 구역 중 적어도 한 곳에 늑대가 있다는 뜻이다.

MM개의 정보를 모두 만족하는 늑대 배치가 몇 가지인지 세는 프로그램을 작성하시오. 두 배치는 늑대가 있는 구역의 집합이 다를 때 서로 다른 배치다.

입력

첫째 줄에 구역의 개수 NN과 정보의 개수 MM이 주어진다. (1N,M3001 \le N, M \le 300)

둘째 줄부터 MM개의 줄에 정보가 한 줄에 하나씩 주어진다. 각 줄에는 구간의 왼쪽 끝 구역 번호 LL과 오른쪽 끝 구역 번호 RR이 주어진다. (0LRN10 \le L \le R \le N-1) 구간은 양 끝 구역을 포함한다. 같은 구간이 여러 번 주어질 수도 있다.

출력

첫째 줄에 가능한 배치의 수를 1,000,000,007로 나눈 나머지를 출력한다.