#include<iostream>usingnamespace std;typedeflonglong ll;const ll mod =10007;
ll N, X, Y;struct Matrix {staticconstint N =15;
ll a[N][N];Matrix(ll e =0){for(int i =1; i <=4; i++)for(int j =1; j <=4; j++)
a[i][j]= e *(i == j);}
Matrix mul(Matrix A, Matrix B){
Matrix ans(0);for(int i =1; i <=4; i++){for(int j =1; j <=4; j++){for(int k =1; k <=4; k++){
ans.a[i][j]=(ans.a[i][j]+ A.a[i][k]* B.a[k][j])% mod;}}}return ans;}
Matrix ksm(Matrix A, ll b){
Matrix ans(1);while(b){if(b &1)ans =mul(ans, A);
A =mul(A, A); b >>=1;}return ans;}};
ll c[5];intmain(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
c[1]=2; c[2]=1; c[3]=1; c[4]=1;while(cin >> N >> X >> Y){
Matrix tmp;if(N <2){
cout << N +1<<"\n";continue;}
tmp.a[1][1]=1;
tmp.a[1][2]= X * X % mod;
tmp.a[1][3]=2* X * Y % mod;
tmp.a[1][4]= Y * Y % mod;
tmp.a[2][2]= X * X % mod;
tmp.a[2][3]=2* X * Y % mod;
tmp.a[2][4]= Y * Y % mod;
tmp.a[3][2]= X % mod;
tmp.a[3][3]= Y % mod;
tmp.a[4][2]=1;
tmp = tmp.ksm(tmp, N -1);
ll res =0;for(int i =1; i <=4;++i)
res =(res + tmp.a[1][i]* c[i])% mod;
cout << res <<"\n";}}