#include <bits/stdc++.h>
using namespace std;
const int N = int(5e5) + 5;
const int inf = (int)1e9 + 7;
int k;
int dp[501][501];
inline void add(int &x, int y) {
  x += y;
  if (x > inf) {
    x -= inf;
  }
}
int main() {
  scanf("%d", &k);
  dp[1][0] = 1;
  dp[1][1] = 1;
  for (int i = 2; i <= k; ++i) {
    for (int f = 0; f <= k; ++f) {
      for (int s = 0; s + f <= k; ++s) {
        int e = dp[i - 1][f] * 1ll * dp[i - 1][s] % inf;
        add(dp[i][f + s], e);
        add(dp[i][f + s + 1], e);
        add(dp[i][f + s], e * 2ll * f % inf);
        add(dp[i][f + s], e * 2ll * s % inf);
        if (f || s) {
          add(dp[i][f + s - 1],
              e * 1ll * (((f + s) * 1ll * (f + s - 1)) % inf) % inf);
        }
      }
    }
  }
  printf("%d\n", dp[k][1]);
  return 0;
}
