#include #include #define POS(i,j,k) (((i)*(n+1)+(j))*(n+1)+(k)) double calc(double *e,int n,int i,int j,int k){ if(i==0 && j==0 && k==0) return 0.0; if(e[POS(i,j,k)]>=1.0) return e[POS(i,j,k)]; double t=1.0; if(i>0) t+=(double)i/n*calc(e,n,i-1,j+1,k); if(j>0) t+=(double)j/n*calc(e,n,i,j-1,k+1); if(k>0) t+=(double)k/n*calc(e,n,i,j,k-1); t/=1-(double)(n-i-j-k)/n; e[POS(i,j,k)]=t; return t; } void run(void){ int n; scanf("%d",&n); int cnt[4]={0}; int i; for(i=0;i=3?3:a]++; } double *e=(double *)calloc((n+1)*(n+1)*(n+1),sizeof(double)); calc(e,n,cnt[0],cnt[1],cnt[2]); printf("%.6lf\n",e[POS(cnt[0],cnt[1],cnt[2])]); free(e); return; } int main(void){ run(); return 0; }