import copy
t = int(raw_input())
while t:
n= int(raw_input())
l=[]
arr = raw_input()
l = list(map(int, arr.split(' ')))
count=0
if n==1:
print "0"
print l[0]
elif n==2:
if l[0] ==l[1]:
print "0"
print l[0],l[1]
else:
print "2"
print l[1],l[0]
else:
g = set(l)
if len(g) == len(l):
print len(g)
f = l[len(l)-1:-2:-1]+l[0:len(l)-1:1]
#print f
print " ".join(str(i) for i in f)
else:
m = copy.copy(l)
for i in range(len(l)):
#print m,"sjsnnsj",l
for j in range(i,len(m)):
if l[i] !=m[j]:
m[i],m[j] = m[j],m[i]
#print m
break
for i in range(len(l)-1,0,-1):
#print m,"sjsnnsj",l
for j in range(i,0,-1):
if l[i] !=m[j]:
m[i],m[j] = m[j],m[i]
#print m
break
for i in range(len(l)):
if l[i]!=m[i]:
count = count+1
print count
print " ".join(str(i) for i in m)
t = t-1
aW1wb3J0IGNvcHkKdCA9IGludChyYXdfaW5wdXQoKSkKd2hpbGUgdDoKICAgIG49IGludChyYXdfaW5wdXQoKSkKICAgIGw9W10KICAgIGFyciA9IHJhd19pbnB1dCgpCiAgICBsID0gbGlzdChtYXAoaW50LCBhcnIuc3BsaXQoJyAnKSkpCiAgICBjb3VudD0wCiAgICBpZiBuPT0xOgogICAgICAgIHByaW50ICIwIgogICAgICAgIHByaW50IGxbMF0KICAgIGVsaWYgbj09MjoKICAgICAgICBpZiBsWzBdID09bFsxXToKICAgICAgICAgICAgcHJpbnQgIjAiCiAgICAgICAgICAgIHByaW50IGxbMF0sbFsxXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50ICIyIgogICAgICAgICAgICBwcmludCBsWzFdLGxbMF0KICAgIGVsc2U6CiAgICAgICAgZyA9IHNldChsKQogICAgICAgIGlmIGxlbihnKSA9PSBsZW4obCk6CiAgICAgICAgICAgIHByaW50IGxlbihnKQogICAgICAgICAgICBmID0gbFtsZW4obCktMTotMjotMV0rbFswOmxlbihsKS0xOjFdCiAgICAgICAgICAgICNwcmludCBmCiAgICAgICAgICAgIHByaW50ICIgIi5qb2luKHN0cihpKSBmb3IgaSBpbiBmKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG0gPSBjb3B5LmNvcHkobCkKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGwpKToKICAgICAgICAgICAgICAgICNwcmludCBtLCJzanNubnNqIixsCiAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShpLGxlbihtKSk6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxbaV0gIT1tW2pdOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbVtpXSxtW2pdID0gbVtqXSxtW2ldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQgbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGwpLTEsMCwtMSk6CiAgICAgICAgICAgICAgICAjcHJpbnQgbSwic2pzbm5zaiIsbAogICAgICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoaSwwLC0xKToKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbFtpXSAhPW1bal06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtW2ldLG1bal0gPSBtW2pdLG1baV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCBtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihsKSk6CiAgICAgICAgICAgICAgICBpZiBsW2ldIT1tW2ldOgogICAgICAgICAgICAgICAgICAgIGNvdW50ID0gY291bnQrMQogICAgICAgICAgICBwcmludCBjb3VudAogICAgICAgICAgICBwcmludCAiICIuam9pbihzdHIoaSkgZm9yIGkgaW4gbSkKIAogCiAKIAogCiAgICB0ID0gdC0xIAo=