#include <bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef long double llf;
typedef pair<int, int> pi;
const int MAXN = 305;
const int mod = 1e9 + 7;
#define sz(v) ((int)v.size())

lint dp[MAXN][MAXN][MAXN];
int n, m;

int main(){
	cin >> n >> m;
	dp[m][0][1] = 1;
	for(int i=m; i>=1; i--){
		for(int j=0; j<=n; j++){
			for(int k=0; k<=n; k++){
				dp[i][j][k] %= mod;
				dp[i-1][j+1][k] += dp[i][j][k] * (n - j - k);
				dp[i-1][j][k] += dp[i][j][k] * j;
				if(j + k < MAXN) dp[i-1][0][j+k] += dp[i][j][k] * k;
			}
		}
	}
	cout <<  dp[0][0][n] % mod << endl;
}
