2xN 격자에서 금지 칸을 추가하거나 삭제하는 쿼리를 처리하면서, 매 쿼리마다 1x2와 2x1 타일로 나머지 칸을 모두 채우는 경우의 수를 1e9+7로 나눈 나머지로 출력한다.
2xN 크기의 직사각형에 1x2 또는 2x1크기의 타일로 채우는 방법의 수를 구하는 문제는 잘 알려져 있다.
최초에 아무런 제한이 없는 2xN 직사각형에 블럭을 놓는 칸에 대한 제한이 빈번히 생기고 사라질 때 제한을 제외한 나머지 칸을 전부 채우는 방법의 수를 구하는 프로그램을 작성하시오.
각 쿼리는 다음과 같다.
첫째줄에 N과 쿼리의 수를 나타내는 정수 Q가 공백으로 구분하여 주어진다. (1 ≤ N ≤ 105, 1 ≤ Q ≤ 2 x 105)
둘째줄부터 Q줄에 걸쳐 2가지 종류의 쿼리가 주어진다. 각 쿼리는 t x y꼴로 주어지며 1 ≤ t, x ≤ 2, 1 ≤ y ≤ N을 만족한다.
Q개의 줄에 걸쳐 i번째 쿼리까지 적용했을 때의 경우의 수를 (109 + 7)로 나눈 나머지를 순서대로 출력한다.