#include <bits/stdc++.h>
const int INF=1e9,MOD=1e9+7;
const long long LINF=1e18;
using namespace std;
#define int long long
//template
int dp[305][305][305];
int pw(int n,int k){
  int res=1;
  while(k){
    if(k&1)res*=n;res%=MOD;
    n*=n;n%=MOD;
    k>>=1;
  }
  return res;
}
//main
signed main(){
  int N,M;cin>>N>>M;
  memset(dp,0,sizeof(dp));
  dp[0][N-1][1]=1;
  for(int i=0;i<M;i++){
    for(int j=0;j<=N;j++){
      for(int k=0;k<=N;k++){
        if(j)dp[i+1][j-1][k]+=dp[i][j][k]*j;
        dp[i+1][j][N-j]+=dp[i][j][k]*k;
        dp[i+1][j][k]+=dp[i][j][k]*(N-j-k);
        if(j)dp[i+1][j-1][k]%=MOD;
        dp[i+1][j][N-j]%=MOD;
        dp[i+1][j][k]%=MOD;
      }
    }
  }
  cout<<dp[M][0][N]<<endl;
}
