/* ID: espr1t TASK: KEYWORDS: */ #include #include #include #include #include using namespace std; FILE *in; FILE *out; const int MAX = 1024; const int MOD = 1000000007; long long fastPow(long long num, long long pwr) { long long ret = 1; for (; pwr > 0; pwr /= 2LL) { if (pwr % 2) ret = (ret * num) % MOD; num = (num * num) % MOD; } return ret; } int main(void) { in = stdin; out = stdout; in = fopen("robots.in", "rt"); out = fopen("robots.out", "wt"); int n; fscanf(in, "%d", &n); long long ans = 1; ans = (ans * fastPow(2, n)) % MOD; /* long long chk = 1; for (int i = 1; i < n; i++) chk = (chk * fastPow(3, n - i)) % MOD; ans = (ans * chk) % MOD; fprintf(stderr, "chk is %d\n", (int)chk); */ long long pwr = (long long)n * (n - 1) / 2LL; ans = (ans * fastPow(3, pwr)) % MOD; fprintf(out, "%d\n", (int)ans); return 0; }