phi[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i])
{
phi[i]=i-1;
pr[++pc]=i;
}
for(int j=1;j<=pc&&i*pr[j]<=n;j++)
{
vis[i*pr[j]]=1;
if(i%pr[j])
{
phi[i*pr[j]]=phi[i]*(pr[j]-1);
}else
{
phi[i*pr[j]]=phi[i]*pr[j];
break;
}
}
}
d[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i])
{
d[i]=2;
exp[i]=1;
pr[++pc]=i;
}
for(int j=1;j<=pc&&i*pr[j]<=n;j++)
{
vis[i*pr[j]]=1;
if(i%pr[j])
{
d[i*pr[j]]=d[i]*d[pr[j]];
exp[i*pr[j]]=1;
}else
{
d[i*pr[j]]=d[i]/(exp[i]+1)*(exp[i]+2);
exp[i*pr[j]]=exp[i]+1;
break;
}
}
}
sig[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i])
{
pw[i]=i;
spw[i]=i+1;
sig[i]=i+1;
pr[++pc]=i;
}
for(int j=1;j<=pc&&i*pr[j]<=n;j++)
{
vis[i*pr[j]]=1;
if(i%pr[j])
{
pw[i*pr[j]]=pr[j];
spw[i*pr[j]]=pr[j]+1;
sig[i*pr[j]]=sig[i]*sig[pr[j]];
}else
{
pw[i*pr[j]]=pw[i]*pr[j];
spw[i*pr[j]]=spw[i]+pw[i]*pr[j];
sig[i*pr[j]]=sig[i]/spw[i]*spw[i*pr[j]];
break;
}
}
}
mu[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i])
{
mu[i]=-1;
pr[++pc]=i;
}
for(int j=1;j<=pc&&i*pr[j]<=n;j++)
{
vis[i*pr[j]]=1;
if(i%pr[j])
{
mu[i*pr[j]]=-mu[i];
}else
{
mu[i*pr[j]]=0;
break;
}
}
}