P3197
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const long long mod=1e5+3;
long long fact[100005];
long long qpow(long long a, long long b, long long mod) {
long long res = 1;
a%=mod;
while(b){
if(b&1) res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res;
}
long long inv(long long x, long long m) {
if (__gcd(x,(long long)m) != 1) return -1;
return qpow(x,m-2,m);
}
long long C(long long n,long long m){
if(n<0 || m<0 || n<m) return 0;
if(m==0 || n==0) return 1;
if(m==1) return n%mod;
return fact[n]*inv(fact[m]*fact[n-m]%mod,mod)%mod;
}
long long A(long long n,long long m) {
long long res=1;
for (long long i=m;i>=1;i--) {
res=((res%mod)*(n%mod))%mod;
n--;
}
return res;
}
long long katlan(int n){
return ((C(2*n,n))%mod*(inv(n+1,mod))%mod)%mod;
}
int main(){
int n,m;
cin>>m>>n;
int res=(qpow(m,n,mod)%mod)-(m*qpow(m-1,n-1,mod)%mod);
if(res<0) res+=mod;
cout<<res<<endl;
}