const int maxs = 300;
bool g[maxs+1][maxs+1];
int gcd(int a, int b){
return (b==0) ? a : gcd(b,a%b);
}
void make_phi_table(){
int m,n;
memset(g,0,sizeof(g));
for(int i = 1; i <= maxs; ++i){
for(int j = i; j <= maxs; ++j){
if(g[i][j]==0 && gcd(i,j)==1){
m = i+i; n = j+j;
while(m<=maxs && n<=maxs){
g[m][n] = g[n][m] = 1;
m += i; n += j;
}
}
}
}
}
const int maxs = 300;
int g[maxs+1][maxs+1];
int gcd(int a, int b){
return (b==0) ? a : gcd(b,a%b);
}
void make_gcd_table(){
int m,n,s;
memset(g,0,sizeof(g));
for(int i = 1; i <= maxs; ++i){
for(int j = i; j <= maxs; ++j){
if(g[i][j] == 0){
m = i; n = j; s = 1;
while(m<=maxs && n<=maxs){
g[m][n] = g[n][m] = s;
m += i; n += j; s++;
}
}
}
}
}