#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define ll long long
#define vll vector<ll>
#define vvll vector<vll>
#define FOR(i,a,b) for(ll i = a;i<b;i++)
#define pll pair<ll,ll>
#define pii pair<int,int>
#define pb push_back
#define Ye cout<<"YES\n"
#define No cout<<"NO\n";
void in(int n, int a[]){
for(int i = 0;i<n;i++){
cin >> a[i];
}
}
void out(int n, int a[]){
for(int i = 0;i<n;i++){
cout << a[i] << " ";
}
}
const int maxn = 2e5+5;
const int maxp = 1e7+5;
int spf[maxp];
void sieve(){
for(int i = 0;i<maxp;i++){
spf[i] = i;
}
for(int i = 2;i*i<maxp;i++){
if(spf[i] == i){
for(int j = i*i;j<maxp;j+=i){
if(spf[j] == j){
spf[j] = i;
}
}
}
}
}
namespace u{
int n,k;
int a[maxn];
int mask[maxn];
void solve(){
cin >> n >> k;
in(n,a);
for(int i = 0;i<n;i++){
mask[i] = 0;
}
vector<vector<pair<int,int>>> f(n+5,vector<pair<int,int>>());
//phan tich thua so nguyen to
for(int i = 0;i<n;i++){
int x = a[i];
if(x<2){
f[i].push_back({1,1});
}
while(x>1){
int p = spf[x];
int cnt = 0;
while(x%p==0){
cnt++;
x/=p;
}
f[i].push_back({p,cnt});
}
}
//tinh mask
for(int i = 0;i<n;i++){
int h = 1;
for(int j = 0;j<(int)f[i].size();j++){
int p = f[i][j].first;
int q = f[i][j].second%2;
if(q == 1){
h*=p;
}
}
mask[i] = h;
}
int l = 0; int r = 0;
int ans = 0;
while(l<=r && r < n){
map<int,int> cnt;
while(cnt.find(mask[r]) == cnt.end() && r < n){
cnt[mask[r]]++;
r++;
}
l = r;
ans++;
}
cout << ans << "\n";
}
}
signed main(){
fast;
sieve();
int t = 1; cin >> t;
while(t--) u::solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBmYXN0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKQojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHZsbCB2ZWN0b3I8bGw+CiNkZWZpbmUgdnZsbCB2ZWN0b3I8dmxsPgojZGVmaW5lIEZPUihpLGEsYikgZm9yKGxsIGkgPSBhO2k8YjtpKyspCiNkZWZpbmUgcGxsIHBhaXI8bGwsbGw+CiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBZZSBjb3V0PDwiWUVTXG4iCiNkZWZpbmUgTm8gY291dDw8Ik5PXG4iOwp2b2lkIGluKGludCBuLCBpbnQgYVtdKXsKICAgIGZvcihpbnQgaSA9IDA7aTxuO2krKyl7CiAgICAgICAgY2luID4+IGFbaV07CiAgICB9Cn0Kdm9pZCBvdXQoaW50IG4sIGludCBhW10pewogICAgZm9yKGludCBpID0gMDtpPG47aSsrKXsKICAgICAgICBjb3V0IDw8IGFbaV0gPDwgIiAiOwogICAgfQp9CmNvbnN0IGludCBtYXhuID0gMmU1KzU7CmNvbnN0IGludCBtYXhwID0gMWU3KzU7CmludCBzcGZbbWF4cF07CnZvaWQgc2lldmUoKXsKICAgIGZvcihpbnQgaSA9IDA7aTxtYXhwO2krKyl7CiAgICAgICAgc3BmW2ldID0gaTsKICAgIH0KICAgIGZvcihpbnQgaSA9IDI7aSppPG1heHA7aSsrKXsKICAgICAgICBpZihzcGZbaV0gPT0gaSl7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IGkqaTtqPG1heHA7ais9aSl7CiAgICAgICAgICAgICAgICBpZihzcGZbal0gPT0gail7CiAgICAgICAgICAgICAgICAgICAgc3BmW2pdID0gaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpuYW1lc3BhY2UgdXsKICAgIGludCBuLGs7CiAgICBpbnQgYVttYXhuXTsKICAgIGludCBtYXNrW21heG5dOwogICAgdm9pZCBzb2x2ZSgpewogICAgICAgIGNpbiA+PiBuID4+IGs7CiAgICAgICAgaW4obixhKTsKICAgICAgICBmb3IoaW50IGkgPSAwO2k8bjtpKyspewogICAgICAgICAgICBtYXNrW2ldID0gMDsKICAgICAgICB9CiAgICAgICAgdmVjdG9yPHZlY3RvcjxwYWlyPGludCxpbnQ+Pj4gZihuKzUsdmVjdG9yPHBhaXI8aW50LGludD4+KCkpOwogICAgICAgIC8vcGhhbiB0aWNoIHRodWEgc28gbmd1eWVuIHRvCiAgICAgICAgZm9yKGludCBpID0gMDtpPG47aSsrKXsKICAgICAgICAgICAgaW50IHggPSBhW2ldOwogICAgICAgICAgICBpZih4PDIpewogICAgICAgICAgICAgICAgZltpXS5wdXNoX2JhY2soezEsMX0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlKHg+MSl7CiAgICAgICAgICAgICAgICBpbnQgcCA9IHNwZlt4XTsKICAgICAgICAgICAgICAgIGludCBjbnQgPSAwOwogICAgICAgICAgICAgICAgd2hpbGUoeCVwPT0wKXsKICAgICAgICAgICAgICAgICAgICBjbnQrKzsKICAgICAgICAgICAgICAgICAgICB4Lz1wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZltpXS5wdXNoX2JhY2soe3AsY250fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy90aW5oIG1hc2sKICAgICAgICBmb3IoaW50IGkgPSAwO2k8bjtpKyspewogICAgICAgICAgICBpbnQgaCA9IDE7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IDA7ajwoaW50KWZbaV0uc2l6ZSgpO2orKyl7CiAgICAgICAgICAgICAgICBpbnQgcCA9IGZbaV1bal0uZmlyc3Q7CiAgICAgICAgICAgICAgICBpbnQgcSA9IGZbaV1bal0uc2Vjb25kJTI7CiAgICAgICAgICAgICAgICBpZihxID09IDEpewogICAgICAgICAgICAgICAgICAgIGgqPXA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbWFza1tpXSA9IGg7CiAgICAgICAgfQogICAgICAgIGludCBsID0gMDsgaW50IHIgPSAwOwogICAgICAgIGludCBhbnMgPSAwOwogICAgICAgIHdoaWxlKGw8PXIgJiYgciA8IG4pewogICAgICAgICAgICBtYXA8aW50LGludD4gY250OwogICAgICAgICAgICB3aGlsZShjbnQuZmluZChtYXNrW3JdKSA9PSBjbnQuZW5kKCkgJiYgciA8IG4pewogICAgICAgICAgICAgICAgY250W21hc2tbcl1dKys7CiAgICAgICAgICAgICAgICByKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbCA9IHI7CiAgICAgICAgICAgIGFucysrOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgfQp9CnNpZ25lZCBtYWluKCl7CiAgICBmYXN0OwogICAgc2lldmUoKTsKICAgIGludCB0ID0gMTsgY2luID4+IHQ7CiAgICB3aGlsZSh0LS0pIHU6OnNvbHZlKCk7Cn0=