#include #define MOD 1000 #define LIMIT 604 #define START 4 int n, h[LIMIT]; int main(void) { scanf("%d", &n); // assert if( ! ( 0 <= n && n <= 1000000000 ) ) { return 1; } int i; for(i = 0; i < LIMIT; i++) { if(i < 2) { h[i] = 2; } else { h[i] = (2 * h[i-1] + 2 * h[i-2]) % MOD; } } int v; if(n < START) { v = h[n]; } else { v = h[(n - START) % (LIMIT - START) + START]; } if(n % 2 == 0) { v--; } if(v < 0) { v += MOD; } // MOD が 1000 のときは該当ケース無し printf("%d\n", v); return 0; }