import std.algorithm, std.array, std.container, std.range, std.bitmanip; import std.numeric, std.math, std.bigint, std.random, core.bitop; import std.string, std.regex, std.conv, std.stdio, std.typecons; void main() { auto p = readln.chomp.to!ulong; auto memo = new ulong[][](p, 3); ulong dp(ulong i, ulong m) { auto r = 0UL; if (i == 0) { foreach (j; 0..10) if (j == 3 || (m + j) % 3 == 0) ++r; } else if (memo[i][m] > 0) { return memo[i][m]; } else { foreach (j; 0..10) if (j == 3) r += 10 ^^ i; else r += dp(i - 1, (m + j) % 3); } return memo[i][m] = r; } writeln(dp(p - 1, 0) - 1); }