행렬과 쿼리
시간 제한1초메모리 제한1024 MB
행과 열을 추가하거나 제거하고 특정 원소를 바꿀 수 있는 2x2 행렬 수열에서 구간 곱을 10^9+9로 나눈 나머지를 구한다.
문제
길이가 인 행렬로 이루어진 수열 , , ..., 이 주어진다. 다음 쿼리를 수행하는 프로그램을 작성하시오. 처음에 모든 행렬은 행 열의 영행렬이다.
- : , , ..., 를 차례대로 곱한 행렬의 행 열의 값을 ()로 나눈 나머지를 출력한다. 만약 차례대로 곱할 수 없다면 대신
-1을 출력한다. 곱이 존재하지만 결과 행렬의 범위를 벗어나는 입력은 주어지지 않는다. () - : 의 행을 마지막에 하나 추가하고 추가된 행을 으로 채운다. 의 행이 행 미만인 경우에만 주어진다. ()
- : 의 마지막 행을 제거한다. 의 행이 행보다 많은 경우에만 주어진다. ()
- : 의 열을 마지막에 하나 추가하고 추가된 열을 으로 채운다. 의 열이 열 미만인 경우에만 주어진다. ()
- : 의 마지막 열을 제거한다. 의 열이 열보다 많은 경우에만 주어진다. ()
- : 의 행 열의 값을 로 변경한다. 행렬의 범위를 벗어나는 입력은 주어지지 않는다. ()
입력
첫 번째 줄에 행렬의 개수를 나타내는 정수 이 주어진다. ()
두 번째 줄에 주어질 쿼리의 개수를 나타내는 정수 가 주어진다. ()
세 번째 줄부터 개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다. 번 쿼리는 한 번 이상 주어진다.
주어지는 모든 수는 정수이다.
출력
번 쿼리가 주어질 때마다 쿼리의 답을 한 줄에 하나씩 출력한다.