#include<iostream> usingnamespace std; typedeflonglong ll; constint mod = 1e9 + 7; ll T, m, n; intqmi(ll a, ll b, ll p) { ll res = 1; while(b) { if(b & 1) res = res * a % p; a = a * a % p; b >>= 1; } return res % p; } intmain() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> T; while(T--) { cin >> n >> m; m = m % mod, n = n % (mod - 1);//??????为什么必须要在这里取模???????,不能再qmi那里取模?????? if(n == 1) cout << m % mod << '\n'; else cout << m % mod * (m - 1) % mod * qmi(m - 2, n - 2, mod) % mod<< '\n'; } return0; }