Олимпиадный тренинг

Задача . A. Отель Гильберта


Отель Гильберта это очень необычный отель, потому что количество комнат в нем бесконечно! Для каждого целого числа существует ровно одна комната с таким номером, включая ноль и отрицательные числа. Не менее странно то, что сейчас отель полностью заполнен, что означает, что в каждой комнате находится ровно один гость. Менеджер отеля, сам Давид Гильберт, решил переместить гостей, потому что у него есть предположение, что за счет этого образуются свободные места.

Для любого целого числа \(k\) и положительного целого числа \(n\) обозначим за \(k\bmod n\) остаток при делении числа \(k\) на число \(n\). Более формально, \(r=k\bmod n\) это наименьшее неотрицательное целое число такое, что \(k-r\) делится на \(n\). Всегда выполнено, что \(0\le k\bmod n\le n-1\). Например, \(100\bmod 12=4\) и \((-1337)\bmod 3=1\).

Процесс перемещения гостей выглядит следующим образом: есть массив, состоящий из \(n\) целых чисел \(a_0,a_1,\ldots,a_{n-1}\). Тогда для всех целых чисел \(k\) гость из комнаты с номером \(k\) перемещается в комнату с номером \(k+a_{k\bmod n}\).

Определите, верно ли, что после этого процесса перемещения в каждой комнате по-прежнему находится ровно один гость. Это означает, что нет пустых комнат и комнат, в которых больше одного гостя.

Входные данные

Каждый тест состоит из нескольких тестовых случаев. Первая строка содержит единственное целое число \(t\) (\(1\le t\le 10^4\)) — количество тестовых случаев. Следующие \(2t\) строк содержат описания тестовых случаев.

В первой строке описания каждого тестового случая находится единственное целое число \(n\) (\(1\le n\le 2\cdot 10^5\)) — длина массива.

Во второй строке описания каждого тестового случая находятся \(n\) целых чисел \(a_0,a_1,\ldots,a_{n-1}\) (\(-10^9\le a_i\le 10^9\)).

Гарантируется, что сумма \(n\) по всем тестовым случаям не превосходит \(2\cdot 10^5\).

Выходные данные

Для каждого тестового случая выведите единственную строку, содержащую «YES», если в каждой комнате после перемещения находится ровно один гость, и «NO» иначе. Вы можете выводить каждый символ в любом регистре.

Примечание

В первом тестовом случае номер комнаты каждого гостя увеличился на \(14\), поэтому по-прежнему в каждой комнате находится ровно один гость.

Во втором тестовом случае гости в комнатах с четными номерами перемещаются в комнату с номером, на \(1\) большим исходного; гости в комнатах с нечетными номерами перемещаются в комнату с номером, на \(1\) меньшим исходного. Можно показать, что по-прежнему в каждой комнате находится ровно один гость.

В третьем тестовом случае каждый четвертый гость перемещается в комнату с номером, на \(1\) большим исходного, а остальные гости перемещаются в комнату с номером, на \(5\) большим. Можно показать, что по-прежнему в каждой комнате находится ровно один гость.

В четвертом тестовом случае гости, исходно находящиеся в комнатах \(0\) и \(1\), перемещаются в комнату с номером \(3\).

В пятом тестовом случае гости, находящиеся в комнатах \(1\) и \(2\), перемещаются в комнату с номером \(2\).


Примеры
Входные данныеВыходные данные
1 6
1
14
2
1 -1
4
5 5 5 1
3
3 2 1
2
0 1
5
-239 -2 -100 -3 -11
YES
YES
YES
NO
NO
YES

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w641
Комментарий учителя