//raja1999 #include #include #include #include #include #include #include #include #include #include #include #include #include #include //setbase - cout << setbase (16); cout << 100 << endl; Prints 64 //setfill - cout << setfill ('x') << setw (5); cout << 77 <=b;i--) #define pb push_back #define mp make_pair #define vi vector< int > #define vl vector< ll > #define ss second #define ff first #define ll long long #define pii pair< int,int > #define pll pair< ll,ll > #define sz(a) a.size() #define inf (1000*1000*1000+5) //#define iinf (3000*1000*1000+5) #define all(a) a.begin(),a.end() #define tri pair #define vii vector #define vll vector #define viii vector #define mod (1000*1000*1000+7) #define pqueue priority_queue< int > #define pdqueue priority_queue< int,vi ,greater< int > > //std::ios::sync_with_stdio(false); ll power(int a,int b){ ll res=1,base=a; while(b>0){ if(b%2){ res*=base; } res%=mod; base*=base; base%=mod; b/=2; } return res; } ll dp[100005][2][2]; int n,k,x; ll compute(int x,int fl,int prev){ if(x==n-2){ if(fl==1){ return 0; } else{ if(prev==1){ return k-1; } else{ return k-2; } } } if(dp[x][fl][prev]!=0){ return dp[x][fl][prev]; } if(fl==0){ if(prev==0){ dp[x][fl][prev]=k-2; dp[x][fl][prev]*=(compute(x+1,0,0)+compute(x+1,1,0)); dp[x][fl][prev]%=mod; //cout<>n>>k>>x; if(x==1){ fl=1; } ll ans=0; ans+=compute(1,0,fl); //cout<