#include #include #include using namespace std; const int NMAX = 40000 + 2; map > suma; map > rest; vector sol; int n; int v[NMAX]; void citeste() { cin >> n; for (int i = 1; i <= n; i++) { cin >> v[i]; v[i] %= n; rest[v[i]].push_back(i); } } void gaseste_sol(int x) { int ant = suma[x].second; sol.push_back(ant); if (v[ant] == x) return; int next = (x - v[ant] + n) % n; gaseste_sol(next); } void scrie() { gaseste_sol(0); cout << sol.size() << '\n'; for (int i = 0; i < (int)sol.size(); i++) cout << sol[i] << ' '; cout << '\n'; } void rezolva() { int aux; for (int i = 1; i <= n; i++) { map > :: iterator it; suma[v[i]].first = true; suma[v[i]].second = i; for (it = suma.begin(); it != suma.end(); it++) { if ((*it).second.second == i) continue; aux = ((*it).first + v[i]) % n; if (suma[aux].first == true) continue; suma[aux].first = true; suma[aux].second = i; } if (suma[0].first == true) { scrie(); return; } cout << endl; } } int main() { citeste(); rezolva(); int a; cin >> a; return 0; }