#include <bits/stdc++.h>
using namespace std;
#define gc getchar_unlocked
void scanint(int &x)
{
register int c = gc();
x = 0;
int neg = 0;
for(;((c<48 || c>57) && c != '-');c = gc());
if(c=='-') {neg=1;c=gc();}
for(;c>47 && c<58;c = gc()) {x = (x<<1) + (x<<3) + c - 48;}
if(neg) x=-x;
}
int n,q,l=0,r=0;
int a[300000];
int qorder[300000];
pair <int,int> query[300000];
int ans[300000];
int nextp[100001];
int atable[100001]= {0};
int lpf[100001],lpfpow[100001],lpfcnt[100001];
int cnt=1;
int b1;
int pr,neg,sq,cb,z;
int compare(const void *a,const void *b)
{
int x=*(int *)a,y=*(int *)b;
if(query[x].first/b1!=query[y].first/b1)
return query[x].first/b1-query[y].first/b1;
return query[x].second-query[y].second;
}
void init(void)
{
for(int i=0; i<=100000; i++)
{
lpf[i]=i;
lpfpow[i]=1;
lpfcnt[i]=0;
}
for(int i=2; i<=100000; i++)
{
if(lpf[i]==i)
{
lpfpow[i]=i;
lpfcnt[i]=1;
for(int j=2*i; j<=100000; j+=i)
{
if(i<lpf[j])
{
int y=j;
lpf[j]=i;
lpfcnt[j]=0;
lpfpow[j]=1;
while(y%i==0)
{
y/=i;
lpfcnt[j]++;
lpfpow[j]*=i;
}
}
}
}
}
for(int i=2;i<=100000;i++)
{
nextp[i]=i/lpfpow[i];
}
}
void add(int pos)
{
// cout << "add : ";
// cout << pos << endl;
int prm,cnt;
int val=a[pos];
// cout << val << endl;
// cout << pr << " " << neg << " " << sq << " " << cb << endl;
if(val==0)
z++;
if(val<0)
{
val=-val;
neg++;
}
while(val>1)
{
// cout << "val is " << val << endl;
prm=lpf[val];
cnt=lpfcnt[val];
if(atable[prm]==0)
{
atable[prm]+=cnt;
val=nextp[val];
pr++;
if(atable[prm]%2==0)
sq++;
if(atable[prm]%3==0)
cb++;
continue;
}
if(atable[prm]%2==0&&(atable[prm]+cnt)%2!=0)
sq--;
else if(atable[prm]%2!=0&&(atable[prm]+cnt)%2==0)
sq++;
if(atable[prm]%3==0&&(atable[prm]+cnt)%3!=0)
cb--;
else if(atable[prm]%3!=0&&(atable[prm]+cnt)%3==0)
cb++;
atable[prm]+=cnt;
val=nextp[val];
}
// cout << pr << " " << neg << " " << sq << " " << cb << endl;
}
void del(int pos)
{
// cout << "del : ";
// cout << pos << endl;
int prm,cnt;
int val=a[pos];
// cout << pr << " " << neg << " " << sq << " " << cb << endl;
if(val==0)
z--;
if(val<0)
{
val=-val;
neg--;
}
while(val>1)
{
prm=lpf[val];
cnt=lpfcnt[val];
if(atable[prm]==cnt)
{
pr--;
val=nextp[val];
if(atable[prm]%2==0)
sq--;
if(atable[prm]%3==0)
cb--;
atable[prm]-=cnt;
continue;
}
if(atable[prm]%2==0&&(atable[prm]-cnt)%2!=0)
sq--;
else if(atable[prm]%2!=0&&(atable[prm]-cnt)%2==0)
sq++;
if(atable[prm]%3==0&&(atable[prm]-cnt)%3!=0)
cb--;
else if(atable[prm]%3!=0&&(atable[prm]-cnt)%3==0)
cb++;
atable[prm]-=cnt;
val=nextp[val];
}
// cout << pr << " " << neg << " " << sq << " " << cb << endl;
}
int main()
{
init();
cin >> n >> q;
for(int i=0; i<n; i++)
scanint(a[i]);
b1=sqrt(n);
for(int i=0; i<q; i++)
{
scanint(query[i].first);
scanint(query[i].second);
qorder[i]=i;
}
pr=sq=neg=cb=z=0;
add(0);
qsort(qorder,q,sizeof(int),compare);
for(int i=0; i<q; i++)
{
int ql=query[qorder[i]].first-1;
int qr=query[qorder[i]].second-1;
while(l<ql)
{
del(l);
l++;
}
while(l>ql)
{
l--;
add(l);
}
while(r<qr)
{
r++;
add(r);
}
while(r>qr)
{
del(r);
r--;
}
if(z>0)
ans[qorder[i]]=1;
else if(neg%2)
{
if(cb==pr)
ans[qorder[i]]=3;
else
ans[qorder[i]]=4;
}
else
{
if(sq==pr&&cb==pr)
ans[qorder[i]]=1;
else if(sq==pr)
ans[qorder[i]]=2;
else if(cb==pr)
ans[qorder[i]]=3;
else
ans[qorder[i]]=4;
}
// cout << qorder[i] << endl;
// cout << pr << " " << neg << " " << sq << " " << cb << endl;
}
for(int i=0; i<q; i++)
{
if(ans[i]==1)
printf("Both\n");
else if(ans[i]==2)
printf("Square\n");
else if(ans[i]==3)
printf("Cube\n");
else
printf("None\n");
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZ2MgZ2V0Y2hhcl91bmxvY2tlZAogCnZvaWQgc2NhbmludChpbnQgJngpCnsKICAgIHJlZ2lzdGVyIGludCBjID0gZ2MoKTsKICAgIHggPSAwOwogICAgaW50IG5lZyA9IDA7CiAgICBmb3IoOygoYzw0OCB8fCBjPjU3KSAmJiBjICE9ICctJyk7YyA9IGdjKCkpOwogICAgaWYoYz09Jy0nKSB7bmVnPTE7Yz1nYygpO30KICAgIGZvcig7Yz40NyAmJiBjPDU4O2MgPSBnYygpKSB7eCA9ICh4PDwxKSArICh4PDwzKSArIGMgLSA0ODt9CiAgICBpZihuZWcpIHg9LXg7Cn0KaW50IG4scSxsPTAscj0wOwppbnQgYVszMDAwMDBdOwppbnQgcW9yZGVyWzMwMDAwMF07CnBhaXIgPGludCxpbnQ+IHF1ZXJ5WzMwMDAwMF07CmludCBhbnNbMzAwMDAwXTsKaW50IG5leHRwWzEwMDAwMV07CmludCBhdGFibGVbMTAwMDAxXT0gezB9OwppbnQgbHBmWzEwMDAwMV0sbHBmcG93WzEwMDAwMV0sbHBmY250WzEwMDAwMV07CmludCBjbnQ9MTsKaW50IGIxOwppbnQgcHIsbmVnLHNxLGNiLHo7CmludCBjb21wYXJlKGNvbnN0IHZvaWQgKmEsY29uc3Qgdm9pZCAqYikKewogICAgaW50IHg9KihpbnQgKilhLHk9KihpbnQgKiliOwogICAgaWYocXVlcnlbeF0uZmlyc3QvYjEhPXF1ZXJ5W3ldLmZpcnN0L2IxKQogICAgICAgIHJldHVybiBxdWVyeVt4XS5maXJzdC9iMS1xdWVyeVt5XS5maXJzdC9iMTsKICAgIHJldHVybiBxdWVyeVt4XS5zZWNvbmQtcXVlcnlbeV0uc2Vjb25kOwp9CiAKdm9pZCBpbml0KHZvaWQpCnsKICAgIGZvcihpbnQgaT0wOyBpPD0xMDAwMDA7IGkrKykKICAgIHsKICAgICAgICBscGZbaV09aTsKICAgICAgICBscGZwb3dbaV09MTsKICAgICAgICBscGZjbnRbaV09MDsKICAgIH0KICAgIGZvcihpbnQgaT0yOyBpPD0xMDAwMDA7IGkrKykKICAgIHsKICAgICAgICBpZihscGZbaV09PWkpCiAgICAgICAgewogICAgICAgICAgICBscGZwb3dbaV09aTsKICAgICAgICAgICAgbHBmY250W2ldPTE7CiAgICAgICAgICAgIGZvcihpbnQgaj0yKmk7IGo8PTEwMDAwMDsgais9aSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoaTxscGZbal0pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaW50IHk9ajsKICAgICAgICAgICAgICAgICAgICBscGZbal09aTsKICAgICAgICAgICAgICAgICAgICBscGZjbnRbal09MDsKICAgICAgICAgICAgICAgICAgICBscGZwb3dbal09MTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSh5JWk9PTApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICB5Lz1pOwogICAgICAgICAgICAgICAgICAgICAgICBscGZjbnRbal0rKzsKICAgICAgICAgICAgICAgICAgICAgICAgbHBmcG93W2pdKj1pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaT0yO2k8PTEwMDAwMDtpKyspCiAgICB7CiAgICAgICAgbmV4dHBbaV09aS9scGZwb3dbaV07CiAgICB9Cn0KIAp2b2lkIGFkZChpbnQgcG9zKQp7CiAgLy8gIGNvdXQgPDwgImFkZCA6ICI7CiAvLyAgIGNvdXQgPDwgcG9zIDw8IGVuZGw7CiAgICBpbnQgcHJtLGNudDsKICAgIGludCB2YWw9YVtwb3NdOwogLy8gICBjb3V0IDw8IHZhbCA8PCBlbmRsOwogIC8vICBjb3V0IDw8IHByIDw8ICIgIiA8PCBuZWcgPDwgIiAiIDw8IHNxIDw8ICIgIiA8PCBjYiA8PCBlbmRsOwogICAgaWYodmFsPT0wKQogICAgICAgIHorKzsKICAgIGlmKHZhbDwwKQogICAgewogICAgICAgIHZhbD0tdmFsOwogICAgICAgIG5lZysrOwogICAgfQogICAgd2hpbGUodmFsPjEpCiAgICB7CiAgICAgICAvLyBjb3V0IDw8ICJ2YWwgaXMgIiA8PCB2YWwgPDwgZW5kbDsKICAgICAgICBwcm09bHBmW3ZhbF07CiAgICAgICAgY250PWxwZmNudFt2YWxdOwogICAgICAgIGlmKGF0YWJsZVtwcm1dPT0wKQogICAgICAgIHsKICAgICAgICAgICAgYXRhYmxlW3BybV0rPWNudDsKICAgICAgICAgICAgdmFsPW5leHRwW3ZhbF07CiAgICAgICAgICAgIHByKys7CiAgICAgICAgICAgIGlmKGF0YWJsZVtwcm1dJTI9PTApCiAgICAgICAgICAgICAgICBzcSsrOwogICAgICAgICAgICBpZihhdGFibGVbcHJtXSUzPT0wKQogICAgICAgICAgICAgICAgY2IrKzsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBpZihhdGFibGVbcHJtXSUyPT0wJiYoYXRhYmxlW3BybV0rY250KSUyIT0wKQogICAgICAgICAgICBzcS0tOwogICAgICAgIGVsc2UgaWYoYXRhYmxlW3BybV0lMiE9MCYmKGF0YWJsZVtwcm1dK2NudCklMj09MCkKICAgICAgICAgICAgc3ErKzsKICAgICAgICBpZihhdGFibGVbcHJtXSUzPT0wJiYoYXRhYmxlW3BybV0rY250KSUzIT0wKQogICAgICAgICAgICBjYi0tOwogICAgICAgIGVsc2UgaWYoYXRhYmxlW3BybV0lMyE9MCYmKGF0YWJsZVtwcm1dK2NudCklMz09MCkKICAgICAgICAgICAgY2IrKzsKICAgICAgICBhdGFibGVbcHJtXSs9Y250OwogICAgICAgIHZhbD1uZXh0cFt2YWxdOwogICAgfQogIC8vICBjb3V0IDw8IHByIDw8ICIgIiA8PCBuZWcgPDwgIiAiIDw8IHNxIDw8ICIgIiA8PCBjYiA8PCBlbmRsOwp9CiAKdm9pZCBkZWwoaW50IHBvcykKewogIC8vICBjb3V0IDw8ICJkZWwgOiAiOwogIC8vICBjb3V0IDw8IHBvcyA8PCBlbmRsOwogICAgaW50IHBybSxjbnQ7CiAgICBpbnQgdmFsPWFbcG9zXTsKICAgLy8gY291dCA8PCBwciA8PCAiICIgPDwgbmVnIDw8ICIgIiA8PCBzcSA8PCAiICIgPDwgY2IgPDwgZW5kbDsKICAgIGlmKHZhbD09MCkKICAgICAgICB6LS07CiAgICBpZih2YWw8MCkKICAgIHsKICAgICAgICB2YWw9LXZhbDsKICAgICAgICBuZWctLTsKICAgIH0KICAgIHdoaWxlKHZhbD4xKQogICAgewogICAgICAgIHBybT1scGZbdmFsXTsKICAgICAgICBjbnQ9bHBmY250W3ZhbF07CiAgICAgICAgaWYoYXRhYmxlW3BybV09PWNudCkKICAgICAgICB7CiAgICAgICAgICAgIHByLS07CiAgICAgICAgICAgIHZhbD1uZXh0cFt2YWxdOwogICAgICAgICAgICBpZihhdGFibGVbcHJtXSUyPT0wKQogICAgICAgICAgICAgICAgc3EtLTsKICAgICAgICAgICAgaWYoYXRhYmxlW3BybV0lMz09MCkKICAgICAgICAgICAgICAgIGNiLS07CiAgICAgICAgICAgIGF0YWJsZVtwcm1dLT1jbnQ7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZihhdGFibGVbcHJtXSUyPT0wJiYoYXRhYmxlW3BybV0tY250KSUyIT0wKQogICAgICAgICAgICBzcS0tOwogICAgICAgIGVsc2UgaWYoYXRhYmxlW3BybV0lMiE9MCYmKGF0YWJsZVtwcm1dLWNudCklMj09MCkKICAgICAgICAgICAgc3ErKzsKICAgICAgICBpZihhdGFibGVbcHJtXSUzPT0wJiYoYXRhYmxlW3BybV0tY250KSUzIT0wKQogICAgICAgICAgICBjYi0tOwogICAgICAgIGVsc2UgaWYoYXRhYmxlW3BybV0lMyE9MCYmKGF0YWJsZVtwcm1dLWNudCklMz09MCkKICAgICAgICAgICAgY2IrKzsKICAgICAgICBhdGFibGVbcHJtXS09Y250OwogICAgICAgIHZhbD1uZXh0cFt2YWxdOwogICAgfQogIC8vICBjb3V0IDw8IHByIDw8ICIgIiA8PCBuZWcgPDwgIiAiIDw8IHNxIDw8ICIgIiA8PCBjYiA8PCBlbmRsOwp9CiAKaW50IG1haW4oKQp7CiAgICBpbml0KCk7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgICAgIHNjYW5pbnQoYVtpXSk7CiAgICBiMT1zcXJ0KG4pOwogICAgZm9yKGludCBpPTA7IGk8cTsgaSsrKQogICAgewogICAgICAgIHNjYW5pbnQocXVlcnlbaV0uZmlyc3QpOwogICAgICAgIHNjYW5pbnQocXVlcnlbaV0uc2Vjb25kKTsKICAgICAgICBxb3JkZXJbaV09aTsKICAgIH0KICAgIHByPXNxPW5lZz1jYj16PTA7CiAgICBhZGQoMCk7CiAgICBxc29ydChxb3JkZXIscSxzaXplb2YoaW50KSxjb21wYXJlKTsKICAgIGZvcihpbnQgaT0wOyBpPHE7IGkrKykKICAgIHsKICAgICAgICBpbnQgcWw9cXVlcnlbcW9yZGVyW2ldXS5maXJzdC0xOwogICAgICAgIGludCBxcj1xdWVyeVtxb3JkZXJbaV1dLnNlY29uZC0xOwogICAgICAgIHdoaWxlKGw8cWwpCiAgICAgICAgewogICAgICAgICAgICBkZWwobCk7CiAgICAgICAgICAgIGwrKzsKICAgICAgICB9CiAgICAgICAgd2hpbGUobD5xbCkKICAgICAgICB7CiAgICAgICAgICAgIGwtLTsKICAgICAgICAgICAgYWRkKGwpOwogICAgICAgIH0KICAgICAgICB3aGlsZShyPHFyKQogICAgICAgIHsKICAgICAgICAgICAgcisrOwogICAgICAgICAgICBhZGQocik7CiAgICAgICAgfQogICAgICAgIHdoaWxlKHI+cXIpCiAgICAgICAgewogICAgICAgICAgICBkZWwocik7CiAgICAgICAgICAgIHItLTsKICAgICAgICB9CiAgICAgICAgaWYoej4wKQogICAgICAgICAgICBhbnNbcW9yZGVyW2ldXT0xOwogICAgICAgIGVsc2UgaWYobmVnJTIpCiAgICAgICAgewogICAgICAgICAgICBpZihjYj09cHIpCiAgICAgICAgICAgICAgICBhbnNbcW9yZGVyW2ldXT0zOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBhbnNbcW9yZGVyW2ldXT00OwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBpZihzcT09cHImJmNiPT1wcikKICAgICAgICAgICAgICAgIGFuc1txb3JkZXJbaV1dPTE7CiAgICAgICAgICAgIGVsc2UgaWYoc3E9PXByKQogICAgICAgICAgICAgICAgYW5zW3FvcmRlcltpXV09MjsKICAgICAgICAgICAgZWxzZSBpZihjYj09cHIpCiAgICAgICAgICAgICAgICBhbnNbcW9yZGVyW2ldXT0zOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBhbnNbcW9yZGVyW2ldXT00OwogICAgICAgIH0KICAgICAvLyAgIGNvdXQgPDwgcW9yZGVyW2ldIDw8IGVuZGw7CiAgICAgLy8gICBjb3V0IDw8IHByIDw8ICIgIiA8PCBuZWcgPDwgIiAiIDw8IHNxIDw8ICIgIiA8PCBjYiA8PCBlbmRsOwogICAgfQogICAgZm9yKGludCBpPTA7IGk8cTsgaSsrKQogICAgewogICAgICAgIGlmKGFuc1tpXT09MSkKICAgICAgICAgICAgcHJpbnRmKCJCb3RoXG4iKTsKICAgICAgICBlbHNlIGlmKGFuc1tpXT09MikKICAgICAgICAgICAgcHJpbnRmKCJTcXVhcmVcbiIpOwogICAgICAgIGVsc2UgaWYoYW5zW2ldPT0zKQogICAgICAgICAgICBwcmludGYoIkN1YmVcbiIpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmKCJOb25lXG4iKTsKICAgIH0KICAgIHJldHVybiAwOwp9