#include <bits/stdc++.h>
long long exp(long long x, long long y, long long p) {
  long long res = 1;
  while (y) {
    if (y % 2) res = (res * x % p) % p;
    x = (x * x) % p;
    y /= 2;
  }
  return res;
}
long long expo(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y % 2) res = (res * x % ((long long)1e8)) % ((long long)1e8);
    x = (x * x) % ((long long)1e8);
    y /= 2;
  }
  return res;
}
long long add(long long a, long long b) {
  return (a % ((long long)1e8) + b % ((long long)1e8) + ((long long)1e8)) %
         ((long long)1e8);
}
long long sub(long long a, long long b) {
  return (a % ((long long)1e8) - b % ((long long)1e8) + ((long long)1e8)) %
         ((long long)1e8);
}
long long mul(long long a, long long b) {
  return ((a % ((long long)1e8)) * (b % ((long long)1e8)) + ((long long)1e8)) %
         ((long long)1e8);
}
long long inv(long long x) { return expo(x, ((long long)1e8) - 2); }
using namespace std;
void solve() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, m, i, j;
  vector<long long> a;
  for (i = 0; i < 100005; i++) {
    long long x = ((i * (i + 1)) * 3) / 2 - i;
    a.push_back(x);
  }
  long long t;
  cin >> t;
  while (t--) {
    cout << setprecision(10);
    long long n, i, j, k, x, y, m;
    cin >> n;
    long long a[n];
    map<long long, long long> mp;
    for (i = 0; i < n; i++) {
      cin >> a[i];
    }
    for (i = 0; i < n; i++) {
      long long x = i + a[i % n];
      if (x >= 0)
        x %= n;
      else {
        long long l = abs(x) / n;
        x += l * n;
        if (x < 0) x += n;
      }
      mp[x]++;
    }
    if (mp.size() == n)
      cout << "YES\n";
    else
      cout << "NO\n";
  }
}
signed main() {
  { solve(); }
  return 0;
}
