#include <bits/stdc++.h>
using namespace std;
const int maxN = 4001, mod = 1000000007;
inline void add_mod(long long& a, long long b) { a = (a + b) % mod; }
inline void mult_mod(long long& a, long long b) { a = a * b % mod; }
long long a[maxN][maxN];
long long conv(int k, int j) {
  long long res = 0;
  for (int i = 0; i <= j; i++) {
    long long d = a[k][i];
    mult_mod(d, a[k][j - i]);
    add_mod(res, d);
  }
  return res;
}
int main() {
  int k;
  scanf("%d", &k);
  a[0][0] = 1;
  for (int i = 1; i <= k; i++) {
    a[i][0] = 1;
    for (int j = 1; j <= k + 1 - i; j++) {
      a[i][j] = conv(i - 1, j);
      mult_mod(a[i][j], j * 2 + 1);
      add_mod(a[i][j], conv(i - 1, j - 1));
      add_mod(a[i][j], conv(i - 1, j + 1) * j * (j + 1));
    }
  }
  printf("%lld\n", a[k][1]);
  return 0;
}
