#include #include typedef unsigned long long ull; int N; int T[1001]; int eq[1001]; ull fact[1001]; int gt[1001], lt[1001]; #define min(a,b) (a T[j]) { lt[i]++; } else { gt[i]++; } } } } for (i = 0; i < N; i++) { if (eq[i]) { if (eq[i] % 2 == 0) { lt[i] += eq[i]/2; gt[i] += eq[i]/2; } else { lt[i] += eq[i]/2; gt[i] += eq[i]/2; gt[i]++; } } } for (i = 0; i < N; i++) { res = 1; m = min(lt[i], gt[i]); if (lt[i] == 0) { res = 1; } else if (gt[i] == 0) { res = N; } else { for (j = 1; j <= m; j++) { res += (bin(lt[i], j)*bin(gt[i], j)); res += (bin(lt[i], j)*bin(gt[i], j-1)); res %= 1000007; } } fprintf(fout, "%llu", res); if (i < N-1) fprintf(fout, " "); } return 0; }