#include<stdio.h>
#include<math.h>
long long int p[100001] = {0},i;
long long int max[100001] = {0};
long long int j=0;
long long int factors(long long int num)
{
// j=0;
long long int count[100001] = {0};
if(num%2==0)
{
p[j++] = 2;
}
while(num%2==0)
{
// p[j++] = 2;
count[2]++;
num = num/2;
}
for(i
=3;i
<=sqrt(num
);i
=i
+2) {
if(num%i==0)
p[j++] = i;
while(num%i==0)
{
count[i] = count[i]+1;
num = num/i;
}
}
if(num>2)
{
p[j++] = num;
count[num] = count[num] + 1;
}
// for(i=0;i<j;i++)
// printf("%d ",p[i]);
// printf("\n");
for(i=0;i<j;i++)
{
// printf("count of %d is %d\n",p[i],count[p[i]]);
if(count[p[i]]>max[p[i]])
max[p[i]] = count[p[i]];
// printf("maximum power of %d is %d\n",p[i],max[p[i]]);
}
}
int main()
{
long long int t;
long long int a[100001],b[100001],n,x,temp,j,i;
while(t--)
{
long long int lcm=1,cycles=0;
for(j=1;j<=n;j++)
{
b[j] = a[j];
}
for(j=1;j<=n;j++)
{
if(a[j]!=0)// first
{
x = a[j];
a[j] = 0;
while(x!=j)
{
temp = x;
x = a[x];
a[temp] = 0;// to keep track of visited indices they are made 0
}
cycles++;
}
}
//printf("%d\n",cycles);
for(j=1;j<=n;j++)
{
int len = 0;
if(b[j]!=0)
{
x = b[j];
b[j] = 0;
//printf("%d ",j);
//len++;
while(x!=j)
{
//printf("%d ",x);
len++;
temp = x;
x = b[x];
b[temp] = 0;
}
//printf("%d",x);
len++;
//printf("\n");
// printf("length of each cycle is %d\n",len);
factors(len);
}
}
for(i=0;i<100000;i++)
{
if(i!=0)
{
}
}
}
return 0;
}
CiNpbmNsdWRlPHN0ZGlvLmg+CiNpbmNsdWRlPG1hdGguaD4KbG9uZyBsb25nIGludCBwWzEwMDAwMV0gPSB7MH0saTsKbG9uZyBsb25nIGludCBtYXhbMTAwMDAxXSA9IHswfTsKbG9uZyBsb25nIGludCBqPTA7CmxvbmcgbG9uZyBpbnQgZmFjdG9ycyhsb25nIGxvbmcgaW50IG51bSkKewovLyAgICBqPTA7CiAgICBsb25nIGxvbmcgaW50IGNvdW50WzEwMDAwMV0gPSB7MH07CiAgICBpZihudW0lMj09MCkKICAgIHsKICAgICAgICBwW2orK10gPSAyOwogICAgfQoKICAgIHdoaWxlKG51bSUyPT0wKQogICAgewovLyAgICAgICAgcFtqKytdID0gMjsKICAgICAgICBjb3VudFsyXSsrOwogICAgICAgIG51bSA9IG51bS8yOwogICAgfQoKICAgIGZvcihpPTM7aTw9c3FydChudW0pO2k9aSsyKQogICAgewogICAgICAgIGlmKG51bSVpPT0wKQogICAgICAgICAgICBwW2orK10gPSBpOwogICAgICAgIHdoaWxlKG51bSVpPT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3VudFtpXSA9IGNvdW50W2ldKzE7CiAgICAgICAgICAgICAgICBudW0gPSBudW0vaTsKICAgICAgICAgICAgfQogICAgfQogICAgaWYobnVtPjIpCiAgICB7CiAgICAgICAgcFtqKytdID0gbnVtOwogICAgICAgIGNvdW50W251bV0gPSBjb3VudFtudW1dICsgMTsKICAgIH0KCi8vICAgIGZvcihpPTA7aTxqO2krKykKLy8gICAgICAgIHByaW50ZigiJWQgIixwW2ldKTsKLy8gICAgcHJpbnRmKCJcbiIpOwogICAgZm9yKGk9MDtpPGo7aSsrKQogICAgewovLyAgICAgIHByaW50ZigiY291bnQgb2YgJWQgaXMgJWRcbiIscFtpXSxjb3VudFtwW2ldXSk7CiAgICAgICAgaWYoY291bnRbcFtpXV0+bWF4W3BbaV1dKQogICAgICAgICAgICBtYXhbcFtpXV0gPSBjb3VudFtwW2ldXTsKLy8gICAgICAgIHByaW50ZigibWF4aW11bSBwb3dlciBvZiAlZCBpcyAlZFxuIixwW2ldLG1heFtwW2ldXSk7CiAgICB9Cn0KaW50IG1haW4oKQp7CiAgICBsb25nIGxvbmcgaW50IHQ7CiAgICBsb25nIGxvbmcgaW50IGFbMTAwMDAxXSxiWzEwMDAwMV0sbix4LHRlbXAsaixpOwogICAgc2NhbmYoIiVkIiwmdCk7CiAgICB3aGlsZSh0LS0pCiAgICB7CiAgICAgICAgbG9uZyBsb25nIGludCBsY209MSxjeWNsZXM9MDsKICAgIHNjYW5mKCIlZCIsJm4pOwogICAgZm9yKGo9MTtqPD1uO2orKykKICAgIHsKICAgICAgICBzY2FuZigiJWQiLCZhW2pdKTsKICAgICAgICBiW2pdID0gYVtqXTsKICAgIH0KICAgIGZvcihqPTE7ajw9bjtqKyspCiAgICB7CiAgICAgICAgaWYoYVtqXSE9MCkvLyBmaXJzdAogICAgICAgIHsKICAgICAgICAgICAgeCA9IGFbal07CiAgICAgICAgICAgIGFbal0gPSAwOwogICAgICAgICAgICB3aGlsZSh4IT1qKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZW1wID0geDsKICAgICAgICAgICAgICAgIHggPSBhW3hdOwogICAgICAgICAgICAgICAgYVt0ZW1wXSA9IDA7Ly8gdG8ga2VlcCB0cmFjayBvZiB2aXNpdGVkIGluZGljZXMgdGhleSBhcmUgbWFkZSAwCiAgICAgICAgICAgIH0KICAgICAgICBjeWNsZXMrKzsKICAgICAgICB9CiAgICB9CiAgICAvL3ByaW50ZigiJWRcbiIsY3ljbGVzKTsKICAgIGZvcihqPTE7ajw9bjtqKyspCiAgICB7CiAgICAgICAgaW50IGxlbiA9IDA7CiAgICAgICAgaWYoYltqXSE9MCkKICAgICAgICB7CiAgICAgICAgICAgIHggPSBiW2pdOwogICAgICAgICAgICBiW2pdID0gMDsKICAgICAgICAgICAgLy9wcmludGYoIiVkICIsaik7CiAgICAgICAgICAgIC8vbGVuKys7CiAgICAgICAgICAgIHdoaWxlKHghPWopCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vcHJpbnRmKCIlZCAiLHgpOwogICAgICAgICAgICAgICAgbGVuKys7CiAgICAgICAgICAgICAgICB0ZW1wID0geDsKICAgICAgICAgICAgICAgIHggPSBiW3hdOwogICAgICAgICAgICAgICAgYlt0ZW1wXSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy9wcmludGYoIiVkIix4KTsKICAgICAgICAgICAgbGVuKys7CiAgICAgICAgICAgIC8vcHJpbnRmKCJcbiIpOwovLyAgICAgICAgICAgIHByaW50ZigibGVuZ3RoIG9mIGVhY2ggY3ljbGUgaXMgJWRcbiIsbGVuKTsKICAgICAgICAgICAgZmFjdG9ycyhsZW4pOwogICAgICAgIH0KICAgIH0KICAgIGZvcihpPTA7aTwxMDAwMDA7aSsrKQogICAgewogICAgICAgIGlmKGkhPTApCiAgICAgICAgewogICAgICAgICAgICBsY20gPSBsY20qcG93KGksbWF4W2ldKTsKICAgICAgICB9CiAgICB9CiAgICBwcmludGYoIiVsbGRcbiIsbGNtKTsKICAgIH0KCnJldHVybiAwOwoKfQo=