#include #include using namespace std; using namespace atcoder; typedef modint998244353 mint; typedef long long ll; int main(){ // 部分ソートしたいのにPythonではキツイ // 我々は C++ に吸い寄せられてしまうのか? int N; cin >> N; vector a(N); for (int i=0; i> a[i]; } int tuyosa = 0; vector kugiri={N}; for (int num=30; num>=0; num--){ int pivot = 0; bool kawaru = false; vector newkugiri = kugiri; for (int j: kugiri){ sort(a.begin()+pivot, a.begin()+j, [&num](int x, int y) -> int { if ((x>>num) < (y>>num)) return true; if ((x>>num) > (y>>num)) return false; return x < y; }); int mode = a[pivot] >> num; while (pivot < j){ int targ = a[pivot] >> num; if (targ != mode){ kawaru = true; newkugiri.push_back(pivot); } mode = targ; pivot++; } } sort(newkugiri.begin(), newkugiri.end()); kugiri = newkugiri; if (kawaru){ tuyosa++; } } cout << mint(2).pow(tuyosa).val() << endl; }