description: n towns are arranged in a circle sequentially. The towns are numbered from 1 to n in clockwise order. In the i-th town, there lives a singer with a repertoire of a_i minutes for each i ∈ [1, n].
  
  Each singer visited all n towns in clockwise order, starting with the town he lives in, and gave exactly one concert in each town. In addition, in each town, the i-th singer got inspired and came up with a song that lasts a_i minutes. The song was added to his repertoire so that he could perform it in the rest of the cities.
  
  Hence, for the i-th singer, the concert in the i-th town will last a_i minutes, in the (i + 1)-th town the concert will last 2 ⋅ a_i minutes, ..., in the ((i + k) mod n + 1)-th town the duration of the concert will be (k + 2) ⋅ a_i, ..., in the town ((i + n - 2) mod n + 1) — n ⋅ a_i minutes.
  
  You are given an array of b integer numbers, where b_i is the total duration of concerts in the i-th town. Reconstruct any correct sequence of positive integers a or say that it is impossible.
  
  Input
  
  The first line contains one integer t (1 ≤ t ≤ 10^3) — the number of test cases. Then the test cases follow.
  
  Each test case consists of two lines. The first line contains a single integer n (1 ≤ n ≤ 4 ⋅ 10^4) — the number of cities. The second line contains n integers b_1, b_2, ..., b_n (1 ≤ b_i ≤ 10^{9}) — the total duration of concerts in i-th city.
  
  The sum of n over all test cases does not exceed 2 ⋅ 10^5.
  
  Output
  
  For each test case, print the answer as follows:
  
  If there is no suitable sequence a, print NO. Otherwise, on the first line print YES, on the next line print the sequence a_1, a_2, ..., a_n of n integers, where a_i (1 ≤ a_i ≤ 10^{9}) is the initial duration of repertoire of the i-th singer. If there are multiple answers, print any of them.
  
  Example
  
  Input
  
  
  4
  3
  12 16 14
  1
  1
  3
  1 2 3
  6
  81 75 75 93 93 87
  
  
  Output
  
  
  YES
  3 1 3 
  YES
  1 
  NO
  YES
  5 5 4 1 4 5 
  
  Note
  
  Let's consider the 1-st test case of the example:
  
    1. the 1-st singer in the 1-st city will give a concert for 3 minutes, in the 2-nd — for 6 minutes, in the 3-rd — for 9 minutes; 
    2. the 2-nd singer in the 1-st city will give a concert for 3 minutes, in the 2-nd — for 1 minute, in the 3-rd - for 2 minutes; 
    3. the 3-rd singer in the 1-st city will give a concert for 6 minutes, in the 2-nd — for 9 minutes, in the 3-rd — for 3 minutes. 
solution: #include <bits/stdc++.h>
  using namespace std;
  const long long mod1 = 1000000007;
  const long long mod2 = 998244353;
  mt19937 rng(
      (unsigned int)chrono::steady_clock::now().time_since_epoch().count());
  long long power(long long a, long long b) {
    long long result = 1;
    while (b > 0) {
      if (b % 2 == 1) {
        result *= a;
      }
      a *= a;
      b /= 2;
    }
    return result;
  }
  long long gcd(long long x, long long y) {
    long long r;
    while (y != 0 && (r = x % y) != 0) {
      x = y;
      y = r;
    }
    return y == 0 ? x : y;
  }
  long long countSetBits(long long x) {
    long long Count = 0;
    while (x > 0) {
      if (x & 1) Count++;
      x = x >> 1;
    }
    return Count;
  }
  long long mod(long long x, long long M) { return ((x % M + M) % M); }
  long long add(long long a, long long b, long long M) {
    return mod(mod(a, M) + mod(b, M), M);
  }
  long long mul(long long a, long long b, long long M) {
    return mod(mod(a, M) * mod(b, M), M);
  }
  long long powerM(long long a, long long b, long long M) {
    long long res = 1ll;
    while (b) {
      if (b % 2ll == 1ll) {
        res = mul(a, res, M);
      }
      a = mul(a, a, M);
      b /= 2ll;
    }
    return res;
  }
  long long mod_inv(long long a, long long m) {
    long long g = m, r = a, x = 0, y = 1;
    while (r != 0) {
      long long q = g / r;
      g %= r;
      swap(g, r);
      x -= q * y;
      swap(x, y);
    }
    return mod(x, m);
  }
  long long ncr(long long n, long long k) {
    if (n < k) return 0;
    if (k == 0) return 1;
    long long res = 1;
    if (k > n - k) k = n - k;
    for (long long i = 0; i < k; ++i) {
      res *= (n - i);
      res /= (i + 1);
    }
    return res;
  }
  vector<long long> FA, INV;
  void fact(long long n, long long M) {
    FA.resize(n + 1);
    FA[0] = 1;
    for (long long i = 1; i <= n; i++) {
      FA[i] = (FA[i - 1] * i) % M;
    }
  }
  void icalc(long long n, long long M) {
    INV.resize(n + 1);
    INV[n] = mod_inv(FA[n], M);
    for (long long i = n - 1; i >= 0; i--) {
      INV[i] = (INV[i + 1] * (i + 1)) % M;
    }
  }
  long long ncrm(long long n, long long r, long long M) {
    if (n < r) return 0;
    if (r == 0) return 1;
    long long a = FA[n];
    a *= INV[r];
    a %= M;
    a *= INV[n - r];
    a %= M;
    return a;
  }
  long long rand_int(long long l, long long r) {
    return uniform_int_distribution<long long>(l, r)(rng);
  }
  ifstream fin;
  ofstream fout;
  template <typename T>
  ostream& operator<<(ostream& output, const vector<T>& data) {
    for (const T& x : data) output << x << " ";
    return output;
  }
  template <typename T>
  istream& operator>>(istream& input, vector<T>& data) {
    for (auto& item : data) {
      input >> item;
    }
    return input;
  }
  void solve() {
    int n;
    cin >> n;
    vector<int> ar(n);
    for (auto& x : ar) {
      cin >> x;
    }
    long long sum = accumulate(ar.begin(), ar.end(), 0LL);
    if ((sum) % ((n * 1LL * (n + 1)) / 2)) {
      cout << "NO\n";
      return;
    }
    sum /= (n * 1LL * (n + 1)) / 2;
    bool check = true;
    vector<int> ans(n);
    for (int i = 0; i < n; ++i) {
      int x = ar[(i + 1) % n] - ar[i];
      ans[(i + 1) % n] = (sum - x) / n;
      if ((sum - x) % n) {
        check = false;
      }
    }
    for (int i = 0; i < n; ++i) {
      if (ans[i] <= 0) {
        check = false;
        break;
      }
    }
    if (check) {
      cout << "YES\n";
      for (auto it : ans) {
        cout << it << " ";
      }
    } else {
      cout << "NO";
    }
    cout << "\n";
  }
  int main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cout << fixed << setprecision(20);
    long long t = 1;
    cin >> t;
    for (long long i = 1; i <= t; i++) {
      solve();
    }
    return 0;
  }
  