Most efficient C solution
\nlong int fact(long int a){\n    if(a==0 || a==1) return 1;\n    long int f=a;  \n    f=f*fact(a-1); \n    \n        return f%(1000000007);\n}\n\nint numPrimeA
```\nlong int fact(long int a){\n    if(a==0 || a==1) return 1;\n    long int f=a;  \n    f=f*fact(a-1); \n    \n        return f%(1000000007);\n}\n\nint numPrimeArrangements(int n){\n    int i;\n    int prime[25] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97};\n    long int composites=0,primes=0;\n    \n    for(i=0;i<25;i++)\n        if(n>=prime[i])\n            primes++;\n    composites=n-primes;\n    return (fact(primes)*fact(composites))%1000000007;     \n}\n```
[]