#include"bits/stdc++.h"
using namespace std;
using ll=long long;
#define S second
#define F first
const int md=1e9+7;
const int mx=400;
ll nck[mx][mx],dp[mx][mx][2];
void add(ll&a,ll b){
a+=b;
if(a>=md)a-=md;
}
int main(){
cin.tie(0)->sync_with_stdio(0);
int n;
cin>>n;
for(int i=0;i<=n;i++){
nck[i][0]=nck[i][i]=1;
for(int j=1;j<i;j++){
nck[i][j]=(nck[i-1][j]+nck[i-1][j-1])%md;
}
}
dp[0][0][0]=1;
for(int i=1;i<=n;i++){
dp[i][0][0]=1;
for(int j=1;j<=n;j++){
for(int k=0;k<=j;k++){
if(j-k!=i)add(dp[i][j][0],dp[i-1][k][0]*nck[j][j-k]%md);
add(dp[i][j][1],dp[i-1][k][1]*nck[j][j-k]%md);
}
if(j>=i)add(dp[i][j][1],dp[i-1][j-i][0]*nck[j][i]%md);
}
}
cout<<dp[n][n][1];
}