#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;
typedef long long LL;
typedef double ld;
const int MAX=1000+10;
int f[MAX][MAX];
int calc2(int N,int K,int L,int P)
{
int i,j,k;
memset(f,0,sizeof f);
if(K>N || K<0 || (LL)L*K>N)
return 0;
f[0][0]=1;
REP(i,1,N)
REP(j,1,K)
{
f[i][j]=( f[i][j]+(LL)f[i-1][j]*(i-1) ) % P;
if(i<L)
continue;
int t=1;
REP(k,2,L)
t=(LL)t*(i-k+1) % P;
f[i][j]=( f[i][j] + (LL)f[i-L][j-1]*t ) % P;
}
return f[N][K];
}
int calc(int N,int K,int L,int P)
{
int cp=N/P;
N%=P;
K-=cp;
int ans=calc2(N,K,L,P);
if(cp%2==1)
ans=(P-ans)%P;
return ans;
}
int main()
{
int n,k,l,i;
cin>>n>>k>>l;
int ans5=calc(n,k,l,5);
int ans401=calc(n,k,l,401);
REP(i,0,2004)
if(i%5==ans5 && i%401==ans401)
break;
cout<<i<<endl;
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxmc3RyZWFtPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPGN0aW1lPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxiaXRzZXQ+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CiNkZWZpbmUgeCBmaXJzdAojZGVmaW5lIHkgc2Vjb25kCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUkVQKGksbCxyKSBmb3IoKGkpPShsKTsoaSk8PShyKTsrKyhpKSkKI2RlZmluZSBSRVAyKGksbCxyKSBmb3IoKGkpPShsKTsoaSkhPShyKTsrKyhpKSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIExMOwp0eXBlZGVmIGRvdWJsZSBsZDsKCmNvbnN0IGludCBNQVg9MTAwMCsxMDsKCmludCBmW01BWF1bTUFYXTsKCmludCBjYWxjMihpbnQgTixpbnQgSyxpbnQgTCxpbnQgUCkKewoJaW50IGksaixrOwoJbWVtc2V0KGYsMCxzaXplb2YgZik7CglpZihLPk4gfHwgSzwwIHx8IChMTClMKks+TikKCQlyZXR1cm4gMDsKCWZbMF1bMF09MTsKCVJFUChpLDEsTikKCQlSRVAoaiwxLEspCgkJewoJCQlmW2ldW2pdPSggZltpXVtqXSsoTEwpZltpLTFdW2pdKihpLTEpICkgJSBQOwoJCQlpZihpPEwpCgkJCQljb250aW51ZTsKCQkJaW50IHQ9MTsKCQkJUkVQKGssMixMKQoJCQkJdD0oTEwpdCooaS1rKzEpICUgUDsKCQkJZltpXVtqXT0oIGZbaV1bal0gKyAoTEwpZltpLUxdW2otMV0qdCApICUgUDsKCQl9CglyZXR1cm4gZltOXVtLXTsKfQoKaW50IGNhbGMoaW50IE4saW50IEssaW50IEwsaW50IFApCnsKCWludCBjcD1OL1A7CglOJT1QOwoJSy09Y3A7CglpbnQgYW5zPWNhbGMyKE4sSyxMLFApOwoJaWYoY3AlMj09MSkKCQlhbnM9KFAtYW5zKSVQOwoJcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKQp7CglpbnQgbixrLGwsaTsKCWNpbj4+bj4+az4+bDsKCWludCBhbnM1PWNhbGMobixrLGwsNSk7CglpbnQgYW5zNDAxPWNhbGMobixrLGwsNDAxKTsKCVJFUChpLDAsMjAwNCkKCQlpZihpJTU9PWFuczUgJiYgaSU0MDE9PWFuczQwMSkKCQkJYnJlYWs7Cgljb3V0PDxpPDxlbmRsOwoJcmV0dXJuIDA7Cn0K