#include #include using namespace std; const int MOD = 1000; int n; void read() { cin >> n; } void work() { if (n == 0) { cout << 1 << endl; return; } if (n == 1) { cout << 2 << endl; return; } static int visited[MOD][MOD]; memset(visited, -1, sizeof(visited)); visited[2][2] = 0; int pre1 = 2; int pre2 = 2; for (int i = 2; i < n; ++i) { int cur = 2 * (pre1 + pre2) % MOD; if (visited[cur][pre1] >= 0) { int cycle = i - visited[cur][pre1]; for (int j = 0; j < (n - i) % cycle; ++j) { cur = 2 * (pre1 + pre2) % MOD; pre2 = pre1; pre1 = cur; } break; } visited[cur][pre1] = i; pre2 = pre1; pre1 = cur; } int ans = 2 * (pre1 + pre2) % MOD; if (n % 2 == 0) { ans = (ans + 999) % MOD; } cout << ans << endl; } int main() { read(); work(); return 0; }