#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>
using namespace std;
const int maxn=2000005;
int first[maxn],last[maxn],next[maxn],n,i,t,j,k,l,x,y,num,ans;
int size[maxn],bz[maxn],v[maxn],fa[maxn];
bool bz1[maxn];
void lian(intx,inty){
last[++num]=y;next[num]=first[x];first[x]=num;
}
int main(){
// freopen("data.in","r",stdin);
scanf("%d",&n);
for (i=1;i<n;i++){
scanf("%d%d",&x,&y);
lian(x,y);lian(y,x);
}
for (i=1;i<=n;i++) size[i]=1;
v[1]=1;i=0;j=1;bz1[1]=true;
while (i<j){
i++;
for (t=first[v[i]];t;t=next[t]){
if (bz1[last[t]]) continue;
bz1[last[t]]=true;
v[++j]=last[t];fa[last[t]]=v[i];
}
}
for (i=j;i>=1;i--){
for (t=first[v[i]];t;t=next[t]){
if (last[t]==fa[v[i]]) continue;
size[v[i]]+=size[last[t]];
}
}
for (i=1;i<=n;i++)
bz[size[i]]++;
for (i=1;i<=n;i++){
if (n%i) continue;
t=0;
for (j=1;j<=n/i;j++)
t+=bz[j*i];
if (t==n/i) ans++;
}
printf("%d\n",ans);
}