/*
* 高精度完全背包
* High precision completely backpack
*/
#include <cstdio>
#include <cstring>
#define MAXN 1001
#define MAXLEN 50
char dp[MAXN][MAXLEN], zero[MAXLEN];
void add(int u, int v)
{
int tmp_val, bit(0);
for(int i = MAXLEN-1; i >= 0; i --) {
tmp_val = dp[v][i]-'0'+dp[u][i]-'0'+bit;
dp[v][i] = tmp_val%10+'0';
bit = tmp_val/10;
}
}
void complete_knapsack(int n, int k)
{
int pos(0);
memset(dp, '0', sizeof(dp));
dp[0][MAXLEN-1] = '1';
for(int i = 1; i <= k; i ++) {
for(int v = 0; v <= n-i; v ++) {
if( 1 == strcmp(dp[v], zero) ) {
add(v, v+i);
}
}
}
while( '0' == dp[n][pos] ) {
pos ++;
}
while( pos < MAXLEN ) {
printf("%c", dp[n][pos ++]);
}
printf("\n");
}
int main(int argc, char const *argv[])
{
#ifndef ONLINE_JUDGE
freopen("test.in", "r", stdin);
#endif
int n, k;
memset(zero, '0', sizeof(zero));
while( ~scanf("%d %d", &n, &k) ) {
complete_knapsack(n, k);
}
return 0;
}