#include <bits/stdc++.h>
using namespace std;
int numTest;
int n, k;
long long x;
vector<int> s;
void subtask4() {
int maxCount = 1;
for (int i = 2; i <= k; i++) {
maxCount *= i;
}
if (x > maxCount) {
cout << "-1\n";
return;
}
vector<int> dif(n + 1), c(n + 1);
for (int i = 1; i + k <= n; i++) {
if (abs(c[i]) >= n) {
cout << "-1\n";
return;
}
dif[i] = s[i + 1] - s[i];
c[i + k] = c[i] + dif[i];
}
vector<int> order(k);
iota(order.begin(), order.end(), 1);
vector<vector<int>> candidates;
do {
vector<bool> mark(n + 1, false);
vector<int> p(n + 1);
auto valid = [&](int v) {
bool res = 1 <= v && v <= n && !mark[v];
mark[v] = true;
return res;
};
int minVal = 1;
bool failed = false;
for (int j = 0; j < k and !failed; j++) {
int sta = order[j];
while (mark[minVal]) {
++minVal;
}
int minC = 2 * n;
for (int i = sta; i <= n; i += k) {
minC = min(minC, c[i]);
}
p[sta] = minVal - minC;
if (!valid(p[sta])) {
failed = true;
}
for (int i = sta + k; i <= n; i += k) {
p[i] = p[sta] + c[i];
if (!valid(p[i])) {
failed = true;
break;
}
}
}
int s1 = 0;
for (int i = 1; i <= k; i++) {
s1 += p[i];
}
if (s1 != s[1]) {
failed = true;
}
if (!failed) {
candidates.push_back(vector<int>(p.begin(), p.begin() + k + 1));
}
} while (next_permutation(order.begin(), order.end()));
sort(candidates.begin(), candidates.end());
if (x > candidates.size()) {
cout << "-1\n";
return;
}
auto p = candidates[x - 1];
p.resize(n + 1);
for (int i = 1; i <= n; i++) {
if (i > k) {
p[i] = p[i - k] + dif[i - k];
}
cout << p[i] << ' ';
}
cout << '\n';
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
freopen("COMPRESS.inp", "r", stdin);
freopen("COMPRESS.out", "w", stdout);
cin >> numTest;
while (numTest-- > 0) {
cin >> n >> k >> x;
s.resize(n - k + 1 + 1);
for (int i = 1; i <= n - k + 1; i++) {
cin >> s[i];
}
subtask4();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG51bVRlc3Q7CmludCBuLCBrOwpsb25nIGxvbmcgeDsKdmVjdG9yPGludD4gczsKCnZvaWQgc3VidGFzazQoKSB7CiAgICBpbnQgbWF4Q291bnQgPSAxOwogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gazsgaSsrKSB7CiAgICAgICAgbWF4Q291bnQgKj0gaTsKICAgIH0KICAgIGlmICh4ID4gbWF4Q291bnQpIHsKICAgICAgICBjb3V0IDw8ICItMVxuIjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2ZWN0b3I8aW50PiBkaWYobiArIDEpLCBjKG4gKyAxKTsKICAgIGZvciAoaW50IGkgPSAxOyBpICsgayA8PSBuOyBpKyspIHsKICAgICAgICBpZiAoYWJzKGNbaV0pID49IG4pIHsKICAgICAgICAgICAgY291dCA8PCAiLTFcbiI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZGlmW2ldID0gc1tpICsgMV0gLSBzW2ldOwogICAgICAgIGNbaSArIGtdID0gY1tpXSArIGRpZltpXTsKICAgIH0KICAgIHZlY3RvcjxpbnQ+IG9yZGVyKGspOwogICAgaW90YShvcmRlci5iZWdpbigpLCBvcmRlci5lbmQoKSwgMSk7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGNhbmRpZGF0ZXM7CiAgICBkbyB7CiAgICAgICAgdmVjdG9yPGJvb2w+IG1hcmsobiArIDEsIGZhbHNlKTsKICAgICAgICB2ZWN0b3I8aW50PiBwKG4gKyAxKTsKICAgICAgICBhdXRvIHZhbGlkID0gWyZdKGludCB2KSB7CiAgICAgICAgICAgIGJvb2wgcmVzID0gMSA8PSB2ICYmIHYgPD0gbiAmJiAhbWFya1t2XTsKICAgICAgICAgICAgbWFya1t2XSA9IHRydWU7CiAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgfTsKICAgICAgICBpbnQgbWluVmFsID0gMTsKICAgICAgICBib29sIGZhaWxlZCA9IGZhbHNlOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgayBhbmQgIWZhaWxlZDsgaisrKSB7CiAgICAgICAgICAgIGludCBzdGEgPSBvcmRlcltqXTsKICAgICAgICAgICAgd2hpbGUgKG1hcmtbbWluVmFsXSkgewogICAgICAgICAgICAgICAgKyttaW5WYWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW50IG1pbkMgPSAyICogbjsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IHN0YTsgaSA8PSBuOyBpICs9IGspIHsKICAgICAgICAgICAgICAgIG1pbkMgPSBtaW4obWluQywgY1tpXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcFtzdGFdID0gbWluVmFsIC0gbWluQzsKICAgICAgICAgICAgaWYgKCF2YWxpZChwW3N0YV0pKSB7CiAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAoaW50IGkgPSBzdGEgKyBrOyBpIDw9IG47IGkgKz0gaykgewogICAgICAgICAgICAgICAgcFtpXSA9IHBbc3RhXSArIGNbaV07CiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKHBbaV0pKSB7CiAgICAgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpbnQgczEgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGs7IGkrKykgewogICAgICAgICAgICBzMSArPSBwW2ldOwogICAgICAgIH0KICAgICAgICBpZiAoczEgIT0gc1sxXSkgewogICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoIWZhaWxlZCkgewogICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2hfYmFjayh2ZWN0b3I8aW50PihwLmJlZ2luKCksIHAuYmVnaW4oKSArIGsgKyAxKSk7CiAgICAgICAgfQogICAgfSB3aGlsZSAobmV4dF9wZXJtdXRhdGlvbihvcmRlci5iZWdpbigpLCBvcmRlci5lbmQoKSkpOwogICAgc29ydChjYW5kaWRhdGVzLmJlZ2luKCksIGNhbmRpZGF0ZXMuZW5kKCkpOwogICAgaWYgKHggPiBjYW5kaWRhdGVzLnNpemUoKSkgewogICAgICAgIGNvdXQgPDwgIi0xXG4iOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGF1dG8gcCA9IGNhbmRpZGF0ZXNbeCAtIDFdOwogICAgcC5yZXNpemUobiArIDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaWYgKGkgPiBrKSB7CiAgICAgICAgICAgIHBbaV0gPSBwW2kgLSBrXSArIGRpZltpIC0ga107CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgcFtpXSA8PCAnICc7CiAgICB9CiAgICBjb3V0IDw8ICdcbic7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKCiAgICBmcmVvcGVuKCJDT01QUkVTUy5pbnAiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIkNPTVBSRVNTLm91dCIsICJ3Iiwgc3Rkb3V0KTsKCiAgICBjaW4gPj4gbnVtVGVzdDsKICAgIHdoaWxlIChudW1UZXN0LS0gPiAwKSB7CiAgICAgICAgY2luID4+IG4gPj4gayA+PiB4OwogICAgICAgIHMucmVzaXplKG4gLSBrICsgMSArIDEpOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG4gLSBrICsgMTsgaSsrKSB7CiAgICAgICAgICAgIGNpbiA+PiBzW2ldOwogICAgICAgIH0KICAgICAgICBzdWJ0YXNrNCgpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cgo=