마법의 도넛 게임
시간 제한2초메모리 제한512 MB
기준 칸이 회전하고 보드가 뒤집히는 원형 배열에서 기준 칸부터 이어지는 구간에 값을 더하고 구간 합을 구해 1e9+7로 나눈 나머지를 출력한다.
문제
Albert는 균등한 크기의 개의 칸으로 구성된 도넛 모양의 게임 보드를 이용한 마법의 도넛 게임 놀이를 즐겨한다.
우선 도넛 모양의 게임 보드의 칸 중 하나를 "기준 칸"으로 삼아 12시 방향에 놓이도록 한 후, 각 칸에는 시계 방향 순으로 의 정수 값을 적어넣는다. 예를 들어 아래 그림은 인 경우를 나타내며 "기준 칸"은 화살표로 강조되어있다.

이후, 지시 사항이 적힌 카드 장을 순서대로 뽑아 카드에 적힌 지시 사항을 수행한다 - 각 카드에는 3개의 정수가 적혀있는데, 편의상 번째 카드에 적힌 3개의 정수를 순서대로 라 하자. 총 다섯 종류의 지시 사항이 있으며, 각 카드에 적힌 첫 번째 정수 ()의 값이 지시 사항의 내용을 결정한다 (즉, ).
- : 게임 보드를 반시계 방향으로 칸만큼 돌린다. 이 경우 항상 이 적혀있다.
- : 게임 보드를 시계 방향으로 칸만큼 돌린다. 이 경우 항상 이 적혀있다.
- : 게임 보드를 12시-6시 축을 기준으로 뒤집는다. 이 경우 항상 이 적혀있다.
- : 게임 보드의 기준칸부터 시작하여 시계 방향으로 총 개의 칸에 적힌 값을 각각 씩 증가시킨다.
- : 게임 보드의 기준칸부터 시작하여 시계 방향으로 총 개의 칸에 적힌 값을 모두 더하여 메모지에 기록한다 (메모지에 번째로 적은 값을 라 하자).
예를 들어 이고 , , 이라 하자.
이 때 5번 종류의 지시사항이 적힌 카드는 총 4장이므로 가 된다.
입력으로 값이 주어졌을 때, 위 놀이를 마친 후 메모지에 적힌 값들을 구해보자 (즉, 값을 구하면 된다).
입력
입력 첫 줄에 테스트 케이스의 수 가 주어진다.
각 테스트의 첫 줄에는 이 공백으로 구분되어 주어진다. 둘째 줄에는 배열 의 원소인 개의 정수가 공백으로 구분되어 주어진다. 셋째 줄에는 배열 의 원소인 개의 정수가 공백으로 구분되어 주어진다. 넷째 줄에는 배열 의 원소인 개의 정수가 공백으로 구분되어 주어진다. 다섯째 줄에는 배열 의 원소인 개의 정수가 공백으로 구분되어 주어진다.
출력
각 테스트 케이스의 정답이 되는 배열 의 값을 공백으로 구분하여 각 줄에 출력한다. 단, 이 값이 매우 커질 수 있으므로 의 각 원소를 로 나눈 나머지를 출력한다.
제한
-
-
-
-
인 각 에 대하여:
-
인 각 에 대하여:
- 인 경우 이고, 인 경우
- 인 경우 이고, 인 경우
-
-
입력으로 주어진 배열 에서 최소 1개의 원소는 임이 보장된다 - 즉, 출력해야 하는 배열 가 비어있는 경우는 입력으로 주어지지 않는다.




