#include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef long double ld; typedef pair P; typedef pair P1; #define fr first #define sc second #define mp make_pair #define pb push_back #define rep(i,x) for(int i=0;i=0;i--) #define rrep1(i,x) for(int i=x;i>0;i--) #define sor(v) sort(v.begin(),v.end()) #define rev(s) reverse(s.begin(),s.end()) #define lb(vec,a) lower_bound(vec.begin(),vec.end(),a) #define ub(vec,a) upper_bound(vec.begin(),vec.end(),a) #define uniq(vec) vec.erase(unique(vec.begin(),vec.end()),vec.end()) #define mp1(a,b,c) P1(a,P(b,c)) const int INF=1000000000; const int dir_4[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; const int dir_8[8][2]={{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}}; ll POW(ll x,ll k){ if(k == 0)return 1; return x * POW(x,k-1); } int main(){ int p; cin >> p; ll ret = POW(10,p)-POW(9,p); ll dp[20][3] = {}; dp[0][0] = 1; rep(i,p){ rep(j,10){ if(j == 3)continue; rep(k,3){ dp[i+1][(k+j)%3] += dp[i][k]; } } } ret += dp[p][0] - 1; cout << ret << endl; }