#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vl;
typedef pair<int, int> pii;
#define sz(a) int((a).size())
#define pb push_back
#define all(c) (c).begin(),(c).end()
#define present(c,x) ((c).find(x) != (c).end())
#define cpresent(c,x) (find(all(c),x) != (c).end())
#define vget(v) rep(i, 0, v.z) get(v[i]);
#define vsort(v) sort(v.begin(), v.end())
#define get(x) cin >> x
#define put(x) cout << x
#define pls(x) cout << x << ' '
#define pln(x) cout << x << "\n"
#define vget(v) rep(i, 0, v.z) get(v[i]);
#define rep(i, begin, end) \
for (__typeof(end) i = (begin) - ((begin) > (end)); \
i != (end) - ((begin) > (end)); i += 1 - 2 * ((begin) > (end)))
#define watch(x) cout << (#x) << " is " << (x) << endl
void fast() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
}
int main(void){
fast();
int t,n,i;
get(t);
while(t--){
get(n);
vi a(n),ps(n+1,0),v(n,0);
rep(i,0,n){
get(a[i]);
// a[i]%=n;
ps[i+1]=(ps[i]+(a[i]%n))%n;
}
int s,b;
rep(i,0,n+1){
if(v[ps[i]]){
s=v[ps[i]]-1;
b=i;
break;
}
v[ps[i]]=i+1;
}
// rep(i,0,n+1) watch(ps[i]);
// pln(s);pln(b);
int x = b-s;
pln(x);
rep(i,s,b) pls(a[i]);
cout<<"\n";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiB2ZWN0b3I8dmk+IHZ2aTsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsKCiNkZWZpbmUgc3ooYSkgaW50KChhKS5zaXplKCkpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgYWxsKGMpIChjKS5iZWdpbigpLChjKS5lbmQoKQojZGVmaW5lIHByZXNlbnQoYyx4KSAoKGMpLmZpbmQoeCkgIT0gKGMpLmVuZCgpKQojZGVmaW5lIGNwcmVzZW50KGMseCkgKGZpbmQoYWxsKGMpLHgpICE9IChjKS5lbmQoKSkKI2RlZmluZSB2Z2V0KHYpIHJlcChpLCAwLCB2LnopIGdldCh2W2ldKTsKI2RlZmluZSB2c29ydCh2KSBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSkKI2RlZmluZSBnZXQoeCkgY2luID4+IHgKI2RlZmluZSBwdXQoeCkgY291dCA8PCB4CiNkZWZpbmUgcGxzKHgpIGNvdXQgPDwgeCA8PCAnICcKI2RlZmluZSBwbG4oeCkgY291dCA8PCB4IDw8ICJcbiIKI2RlZmluZSB2Z2V0KHYpIHJlcChpLCAwLCB2LnopIGdldCh2W2ldKTsKI2RlZmluZSByZXAoaSwgYmVnaW4sIGVuZCkgXAogIGZvciAoX190eXBlb2YoZW5kKSBpID0gKGJlZ2luKSAtICgoYmVnaW4pID4gKGVuZCkpOyBcCiAgICAgICBpICE9IChlbmQpIC0gKChiZWdpbikgPiAoZW5kKSk7IGkgKz0gMSAtIDIgKiAoKGJlZ2luKSA+IChlbmQpKSkKI2RlZmluZSB3YXRjaCh4KSBjb3V0IDw8ICgjeCkgPDwgIiBpcyAiIDw8ICh4KSA8PCBlbmRsCgp2b2lkIGZhc3QoKSB7CiAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgY2luLnRpZShOVUxMKTsKfQoKaW50IG1haW4odm9pZCl7CglmYXN0KCk7CglpbnQgdCxuLGk7CglnZXQodCk7Cgl3aGlsZSh0LS0pewoJCWdldChuKTsKCQl2aSBhKG4pLHBzKG4rMSwwKSx2KG4sMCk7CgkJcmVwKGksMCxuKXsKCQkJZ2V0KGFbaV0pOwoJCQkvLyBhW2ldJT1uOwoJCQlwc1tpKzFdPShwc1tpXSsoYVtpXSVuKSklbjsKCQl9CgoJCWludCBzLGI7CgkJcmVwKGksMCxuKzEpewoJCQlpZih2W3BzW2ldXSl7CgkJCQlzPXZbcHNbaV1dLTE7CgkJCQliPWk7CgkJCQlicmVhazsKCQkJfQoJCQl2W3BzW2ldXT1pKzE7CgkJfQoJCS8vIHJlcChpLDAsbisxKSB3YXRjaChwc1tpXSk7CgkJLy8gcGxuKHMpO3BsbihiKTsKCQlpbnQgeCA9IGItczsKCQlwbG4oeCk7CgkJcmVwKGkscyxiKSBwbHMoYVtpXSk7CgkJY291dDw8IlxuIjsJCgl9Cn0K