1class Solution {2public:3bool isPrime(int x) {4if (x <= 3) return x > 1;5if (x % 2 == 0) return false;67for (int i = 3; i <= sqrt(x); i += 2) {8if (x % i == 0) return false;9}10return true;11}1213int fact(int x) {14if (x <= 1) return 1;15return ((long long)(x)*fact(x - 1)) % 1000000007;16}1718int numPrimeArrangements(int n) {19int c = 0;20for (int i = 1; i <= n; ++i) {21c += isPrime(i);22}23return ((long long)(fact(n - c)) * fact(c)) % 1000000007;24}25};