길이 N의 이진 문자열 중 주어진 모든 구간이 1을 최대 두 개만 포함하도록 하는 배열의 수를 1e9+7로 나눈 나머지를 구한다.
영선이가 서 있는 도로에 늑대가 나타난다. 도로는 NNN개의 구역으로 나뉘고, 구역에는 000번부터 N−1N-1N−1번까지 번호가 붙어 있다. 한 구역에 있는 늑대는 최대 한 마리다.
영선이는 늑대 출몰 정보를 MMM개 알고 있다. 정보 하나는 구간 하나를 가리키며, 그 구간에 늑대가 최대 두 마리 있다는 뜻이다.
정보 MMM개를 모두 만족하는 늑대 배치가 몇 가지인지 구하는 프로그램을 작성하시오. 배치는 구역마다 늑대가 있는지 없는지로 정해진다.
첫째 줄에 구역의 개수 NNN과 정보의 개수 MMM이 주어진다. (1≤N,M≤3001 \le N, M \le 3001≤N,M≤300)
둘째 줄부터 MMM개 줄에 정보가 한 줄에 하나씩 주어진다. 각 줄에는 구간의 왼쪽 끝 구역 번호 LLL과 오른쪽 끝 구역 번호 RRR이 주어진다. (0≤L≤R≤N−10 \le L \le R \le N-10≤L≤R≤N−1) 구간은 양 끝 구역을 포함하며, LLL번 구역부터 RRR번 구역까지에 늑대가 최대 두 마리 있다는 뜻이다. 같은 구간이 여러 번 주어지기도 한다.
첫째 줄에 가능한 늑대 배치의 수를 1,000,000,007로 나눈 나머지를 출력한다.