#include <iostream>
#include<cstdio>
using namespace std;
typedef long long LL;
const int mod=10007;
struct matrix{
LL m[4][4];
};
matrix A;
/*1 x^2 y^2 2*x*y
0 x^2 y^2 2*x*y
0 1 0 0
0 x 0 y*/
matrix I={
1,0,0,0,
0,1,0,0,
0,0,1,0,
0,0,0,1
};
matrix multi(matrix a,matrix b){
matrix c={0};
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
for(int k=0;k<4;k++){
c.m[i][j]+=a.m[i][k]*b.m[k][j]%mod;
}
c.m[i][j]%=mod;
}
}
return c;
}
matrix power(matrix a,int k){
matrix c=I;
while(k){
if(k&1){
c=multi(c,a);
k--;
}
k>>=1;
a=multi(a,a);
}
return c;
}
void initalA(LL x,LL y){
A={
1,(x%mod)*(x%mod),(y%mod)*(y%mod),2*(x%mod)*(y%mod),
0,(x%mod)*(x%mod),(y%mod)*(y%mod),2*(x%mod)*(y%mod),
0, 1, 0, 0,
0, x%mod, 0, y%mod
};
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
A.m[i][j]%=mod;
}
}
}
int main()
{
LL n,x,y;
while(cin>>n>>x>>y){
initalA(x,y);
matrix q=power(A,n-1);
LL ans=q.m[0][0]*2+q.m[0][1]+q.m[0][2]+q.m[0][3];
printf("%lld\n",ans%mod);
}
return 0;
}