| 
 | 
|  | //https://www.acmicpc.net/problem/1563
#include <iostream> | 
|  | #define mod 1000000 | 
|  | using namespace std; | 
|  | int dp[1001][2][3]; | 
|  | int N; | 
|  |  | 
|  | int find(int today, int late, int absence){ | 
|  | if(today==N) return 1; | 
|  | if(dp[today][late][absence]) return dp[today][late][absence]; | 
|  |  | 
|  | //오늘 지각한 경우 | 
|  | if(late==0){ | 
|  | dp[today][late][absence]+=find(today+1, late+1, 0); | 
|  | dp[today][late][absence]%=mod; | 
|  | } | 
|  |  | 
|  | //연속 결속 0일, 1일인 경우 결석 | 
|  | if(absence<2){ | 
|  | dp[today][late][absence]+=find(today+1, late, absence+1); | 
|  | dp[today][late][absence]%=mod; | 
|  | } | 
|  |  | 
|  | //오늘 출석한 경우 | 
|  | dp[today][late][absence]+=find(today+1, late, 0); | 
|  | dp[today][late][absence]%=mod; | 
|  |  | 
|  | return dp[today][late][absence]; | 
|  |  | 
|  |  | 
|  | } | 
|  | int main(){ | 
|  | cin >> N; | 
|  |  | 
|  | cout << find(0,0,0); | 
|  | } |