#ifndef _GLIBCXX_NO_ASSERT #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#ifdef __GXX_EXPERIMENTAL_CXX0X__ #include #include #include #include #include #include #include #include //#endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include #include //#include #include //#include #include //#include #include #include #include #include //#include #include #include #include #include #include using namespace std; int main () { vectormalia(35); long long int x; int N; cin >> x >> N; vectordata(N); for( size_t i = 0; i < N; i++ ) { cin >> data[i]; } for( size_t i = 0; i < 35; i++ ) { malia[i] = x; x *= x; x %= 1000003; } long long int ans = 0; for( size_t i = 0; i < N; i++ ) { int memo = data[i]; int j = 0; long long int ans2 = 1; while( memo > 0 ) { if( memo & 1 ) { ans2 *= malia [ j ]; ans2 %= 1000003; } memo >>= 1; j++; } ans += ans2; ans %= 1000003; } cout << ans << endl; }