#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=310;
const ll mod=1e9+7;
ll comb[maxn][maxn];
ll dp[maxn][maxn];
ll p[maxn],p2[maxn];
void init()
{
for(int i=0;i<maxn;i++)
{
comb[i][0]=comb[i][i]=1;
for(int j=1;j<i;j++)
{
comb[i][j]=comb[i-1][j]+comb[i-1][j-1];
comb[i][j]%=mod;
}
}
}
int main()
{
init();
int n,k;
while(cin>>n>>k)
{
p[0]=p2[0]=1;
for(int i=1;i<=n;i++)
{
p[i]=p[i-1]*k%mod;
p2[i]=p2[i-1]*(k-1)%mod;
}
for(int i=1;i<=n;i++)
{
dp[1][i]=comb[n][i]*p2[n-i]%mod;
}
for(int i=2;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=j;k<=n;k++)
{
ll res=comb[n-j][k-j]*p[j]%mod*p2[n-k]%mod;
if(k==j)
res=((p[j]-p2[j]+mod)%mod*p2[n-j])%mod;
dp[i][k]=(dp[i][k]+dp[i-1][j]*res%mod)%mod;
}
}
}
cout<<dp[n][n]<<endl;
}
return 0;
}