不难发现,一种语言集合与它关于语言全集的补集一定没有交集,因此这两个集合中只能出现一个——这意味着答案一定不大于总集合数 2n2^n 的一半,即 2n12^{n-1}

显然让所有人掌握第 11 种语言是合法的,此时的答案恰好为 2n12^{n-1},故最终的答案为 2n12^{n-1}

#include <bits/stdc++.h>
using namespace std;
const int P = 127237991;
int power(int b, int k, int p)
{
	if (k == 0) return 1;
	if (k == 1) return b;
	long long s = power(b, k >> 1, p);
	s = s * s % p;
	if (k & 1) s *= b;
	return s % p;
}
int main()
{
    long long n;
    cin >> n;
    n = (n - 1) % (P - 1);
    cout << power(2, n, P) << endl;
    return 0;
}