#include<map>
#include<queue>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define qread(x) x=read()
#define mes(x,y) memset(x,y,sizeof(x))
#define mpy(x,y) memcpy(x,y,sizeof(x))
#define mod 100003
#define INF 2147483647
inline long long read(){
char ch=getchar();
long long f=1,x=0;
while(!(ch>='0'&&ch<='9')){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+(ch-'0');ch=getchar();}
return x*f;
}
long long pow_mod(long long x,long long y){
long long ans=1;
while(y>0){
if(y&1)ans=(ans*x)%mod;
x=(x*x)%mod;y>>=1;
}
return ans;
}
long long n,m,x,y,ans;
int main(){
qread(m);qread(n);
x=pow_mod(m,n);
y=m*pow_mod(m-1,n-1)%mod;
ans=(x-y+mod)%mod;
printf("%lld\n",ans);
}