#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <cmath>
#include <map>
#include <queue>
#include <iomanip>
#include <set>
#define MOD 1000000007
typedef long long ll;
using namespace std;

int N,M;

ll dp[303][303][303];

void add(ll &a,ll b){
    a=(a+b)%MOD;
    return;
}

int main(){
  cin>>N>>M;

  dp[0][1][0]=1;
  for(int i=0;i<M;i++){
      for(int j=0;j<=N;j++){
          for(int k=0;j+k<=N;k++){
              add(dp[i+1][j+k][0],dp[i][j][k]*j);
              add(dp[i+1][j][k],dp[i][j][k]*k);
              if(j+k+1<=N) add(dp[i+1][j][k+1],dp[i][j][k]*(N-(j+k)));
          }
      }
  }

  cout<<dp[M][N][0]<<endl;


  return 0;
}
