#include <iostream>
#include <cstdio>
#include<cstdlib>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
/*
#define gc getchar_unlocked //for grader
#define pc putchar_unlocked //for grader
//*/
//*
#define gc getchar // for windows
#define pc putchar // for windows
//*/
#define ll long long
#define ull unsigned long long
#define MOD 1000000007
#define _test() int _t;_t=get();while(_t--)
#define _testll() ll lt;lt=getll();while(lt--)
#define _testull() ull __t;__t=getull();while(__t--)
#define _for(i,a,b) for(i=a;i<b;i++)
#define _forr(i,a,b) for(i=a;a>b;i--)
#define _fori(i,a,b,inc) for(i=a;i<b;i+=inc)
#define pb push_back
#define mp make_pair
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define ssort(v) sort(all(v))
#define rsort(v) sort(rall(v))
#define mem(list,char) memset(list, char, sizeof(a))
typedef vector<int> VI;
typedef vector<ll> VLL;
typedef vector<ull> VULL;
/* Input functions */
inline int get(){int c=gc(),v=0, f=1;for(;c<'0'||c>'9';c=gc()){if(c=='-'){f=-1;c=gc();break;}}for(;c>='0' && c<='9';c=gc())v=(v<<3)+(v<<1)+c-'0';return v*f;}
inline ll getll(){ll c=gc(),v=0, f=1;for(;c<'0' || c>'9';c=gc()){if(c=='-'){f=-1;c=gc();break;}}for(;c>='0' && c<='9';c=gc())v=(v<<3)+(v<<1)+c-'0';return v*f;}
inline ull getull(){ull n=0,c=gc();while(c<'0'||c>'9')c=gc();while(c<='9'&&c>='0'){n=(n<<3)+(n<<1)+c-'0';c=gc();}return n;}
/* End input functions */
/* Output Functions */
void out(int n){char b[10];int i=10;if(n<0){pc('-');n=-n;}do{b[--i]=(n%10)+'0';n/=10;}while(n);do{pc(b[i]);}while(++i<10);}
void outn(int n){char b[10];int i=10;if(n<0){pc('-');n=-n;}do{b[--i]=(n%10)+'0';n/=10;}while(n);do{pc(b[i]);}while(++i<10);pc('\n');}
void outs(int n){char b[10];int i=10;if(n<0){pc('-');n=-n;}do{b[--i]=(n%10)+'0';n/=10;}while(n);do{pc(b[i]);}while(++i<10);pc(' ');}
/* End output functions */
//#define read(val) scanf("%d",&val)
int main()
{
int t;
#ifndef ONLINE_JUDGE
freopen("a.in", "r" , stdin);
freopen("a.out", "w", stdout);
#endif
t=get();
//read(t);
while(t--)
{
int arr[100010]={0};
int inp,i;
inp=get();
//read(inp);
int c=0,val;
_for(i,0,inp)
{
val=get();
//read(val);
arr[val]++;
if(arr[val]==1)c++;
}
outn(c);
}
return 0;
}
/* Test cases are:
2
3
3 3 3
4
1 2 3 3
*/
// Problem is as i used ifndef it stopped working. I implemented ifndef for first time pelase guide me..
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgoKI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovKgojZGVmaW5lIGdjIGdldGNoYXJfdW5sb2NrZWQgICAgICAgICAvL2ZvciBncmFkZXIKI2RlZmluZSBwYyBwdXRjaGFyX3VubG9ja2VkICAgICAgICAgLy9mb3IgZ3JhZGVyCi8vKi8KCi8vKgojZGVmaW5lIGdjIGdldGNoYXIgICAgICAgICAgICAgICAgICAvLyBmb3Igd2luZG93cwojZGVmaW5lIHBjIHB1dGNoYXIgICAgICAgICAgICAgICAgICAvLyBmb3Igd2luZG93cwovLyovCgoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKCiNkZWZpbmUgX3Rlc3QoKSBpbnQgX3Q7X3Q9Z2V0KCk7d2hpbGUoX3QtLSkKI2RlZmluZSBfdGVzdGxsKCkgbGwgbHQ7bHQ9Z2V0bGwoKTt3aGlsZShsdC0tKQojZGVmaW5lIF90ZXN0dWxsKCkgdWxsIF9fdDtfX3Q9Z2V0dWxsKCk7d2hpbGUoX190LS0pCgoKI2RlZmluZSBfZm9yKGksYSxiKSBmb3IoaT1hO2k8YjtpKyspCiNkZWZpbmUgX2ZvcnIoaSxhLGIpIGZvcihpPWE7YT5iO2ktLSkKI2RlZmluZSBfZm9yaShpLGEsYixpbmMpIGZvcihpPWE7aTxiO2krPWluYykKCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSwgdi5lbmQoKQojZGVmaW5lIHJhbGwodikgdi5yYmVnaW4oKSwgdi5yZW5kKCkKI2RlZmluZSBzc29ydCh2KSBzb3J0KGFsbCh2KSkKI2RlZmluZSByc29ydCh2KSBzb3J0KHJhbGwodikpCiNkZWZpbmUgbWVtKGxpc3QsY2hhcikgbWVtc2V0KGxpc3QsIGNoYXIsIHNpemVvZihhKSkKCgp0eXBlZGVmIHZlY3RvcjxpbnQ+IFZJOwp0eXBlZGVmIHZlY3RvcjxsbD4gVkxMOwp0eXBlZGVmIHZlY3Rvcjx1bGw+IFZVTEw7CgoKLyogSW5wdXQgZnVuY3Rpb25zICovCmlubGluZSBpbnQgZ2V0KCl7aW50IGM9Z2MoKSx2PTAsIGY9MTtmb3IoO2M8JzAnfHxjPic5JztjPWdjKCkpe2lmKGM9PSctJyl7Zj0tMTtjPWdjKCk7YnJlYWs7fX1mb3IoO2M+PScwJyAmJiBjPD0nOSc7Yz1nYygpKXY9KHY8PDMpKyh2PDwxKStjLScwJztyZXR1cm4gdipmO30KaW5saW5lIGxsIGdldGxsKCl7bGwgYz1nYygpLHY9MCwgZj0xO2Zvcig7YzwnMCcgfHwgYz4nOSc7Yz1nYygpKXtpZihjPT0nLScpe2Y9LTE7Yz1nYygpO2JyZWFrO319Zm9yKDtjPj0nMCcgJiYgYzw9JzknO2M9Z2MoKSl2PSh2PDwzKSsodjw8MSkrYy0nMCc7cmV0dXJuIHYqZjt9CmlubGluZSB1bGwgZ2V0dWxsKCl7dWxsIG49MCxjPWdjKCk7d2hpbGUoYzwnMCd8fGM+JzknKWM9Z2MoKTt3aGlsZShjPD0nOScmJmM+PScwJyl7bj0objw8MykrKG48PDEpK2MtJzAnO2M9Z2MoKTt9cmV0dXJuIG47fQovKiBFbmQgaW5wdXQgZnVuY3Rpb25zICovCgoKLyogT3V0cHV0IEZ1bmN0aW9ucyAqLwp2b2lkIG91dChpbnQgbil7Y2hhciBiWzEwXTtpbnQgaT0xMDtpZihuPDApe3BjKCctJyk7bj0tbjt9ZG97YlstLWldPShuJTEwKSsnMCc7bi89MTA7fXdoaWxlKG4pO2Rve3BjKGJbaV0pO313aGlsZSgrK2k8MTApO30Kdm9pZCBvdXRuKGludCBuKXtjaGFyIGJbMTBdO2ludCBpPTEwO2lmKG48MCl7cGMoJy0nKTtuPS1uO31kb3tiWy0taV09KG4lMTApKycwJztuLz0xMDt9d2hpbGUobik7ZG97cGMoYltpXSk7fXdoaWxlKCsraTwxMCk7cGMoJ1xuJyk7fQp2b2lkIG91dHMoaW50IG4pe2NoYXIgYlsxMF07aW50IGk9MTA7aWYobjwwKXtwYygnLScpO249LW47fWRve2JbLS1pXT0obiUxMCkrJzAnO24vPTEwO313aGlsZShuKTtkb3twYyhiW2ldKTt9d2hpbGUoKytpPDEwKTtwYygnICcpO30KLyogRW5kIG91dHB1dCBmdW5jdGlvbnMgKi8KCi8vI2RlZmluZSByZWFkKHZhbCkgc2NhbmYoIiVkIiwmdmFsKQppbnQgbWFpbigpCnsKICAgIGludCB0OwoKICAgICNpZm5kZWYgT05MSU5FX0pVREdFCglmcmVvcGVuKCJhLmluIiwgInIiICwgc3RkaW4pOwoJZnJlb3BlbigiYS5vdXQiLCAidyIsIHN0ZG91dCk7CgkjZW5kaWYKCiAgICB0PWdldCgpOwogICAgLy9yZWFkKHQpOwoKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgICAgICBpbnQgYXJyWzEwMDAxMF09ezB9OwogICAgICAgIGludCBpbnAsaTsKICAgICAgICBpbnA9Z2V0KCk7CiAgICAgICAgLy9yZWFkKGlucCk7CiAgICAgICAgaW50IGM9MCx2YWw7CiAgICAgICAgX2ZvcihpLDAsaW5wKQogICAgICAgIHsKICAgICAgICAgICAgdmFsPWdldCgpOwogICAgICAgICAgICAvL3JlYWQodmFsKTsKICAgICAgICAgICAgYXJyW3ZhbF0rKzsKICAgICAgICAgICAgaWYoYXJyW3ZhbF09PTEpYysrOwogICAgICAgIH0KICAgICAgICBvdXRuKGMpOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCgovKiBUZXN0IGNhc2VzIGFyZToKMgozCjMgMyAzCjQKMSAyIDMgMwoqLwoKLy8gUHJvYmxlbSBpcyBhcyBpIHVzZWQgaWZuZGVmIGl0IHN0b3BwZWQgd29ya2luZy4gSSBpbXBsZW1lbnRlZCBpZm5kZWYgZm9yIGZpcnN0IHRpbWUgcGVsYXNlIGd1aWRlIG1lLi4=