void Solve(StreamScanner ss, StreamWriter sw) { //--------------------------------- var comb = new Combination(100010); var N = ss.Next(int.Parse) + 1; var A = ss.Next(int.Parse, N); var cnt = new int[N]; foreach (var a in A) { cnt[a]++; } var dup = Array.IndexOf(cnt, 2); var left = Array.IndexOf(A, dup); var right = Array.LastIndexOf(A, dup); var M = N + left - right - 1; for (var i = 1; i <= N; i++) { sw.WriteLine(comb.NCK(N, i) - comb.NCK(M, i - 1)); } //--------------------------------- }