1class Solution {2long mod = (long) (1e9 + 7);34public int numPrimeArrangements(int n) {5if (n == 1) {6return 1;7}89boolean[] arr = new boolean[n + 1];10Arrays.fill(arr, true);11arr[0] = false;12arr[1] = false;1314for (int i = 2; i <= Math.sqrt(n); i++) {1516for (int j = i * i; j <= n; j += i) {17if (arr[i] == false) {18continue;19}20arr[j] = false;21}22}23long prime = 0;24long notPrime = 0;25for (int k = 1; k < arr.length; k++) {26if (arr[k] == true) {27prime++;28} else {29notPrime++;30}31}3233long x = factorial(prime) % mod;34long y = factorial(notPrime) % mod;35long t = (x * y) % mod;36return (int) t;37}3839public long factorial(long i) {40if (i <= 1) {41return i;42}43return (i * (factorial(i - 1) % mod)) % mod;44}45}