#include <iostream>
#include <vector>
#include <map>
int n,k,ans = 0;
std::vector <int> nums;
std::map <std::vector <int>,bool> vis;
void dfs(int num,int sum){
if (num + sum > n || nums.size() >= k || sum >= n){
if (sum == n && nums.size() == k && !vis[nums]) ans++,vis[nums] = true;
return;
}
dfs(num + 1,sum);
if (nums.empty() || nums.back() <= num){
nums.push_back(num);
dfs(num,sum + num);
nums.pop_back();
nums.push_back(num);
dfs(num + 1,sum + num);
nums.pop_back();
}
}//正在考虑是否选择整数num,以选择的数和为sum,数量为nums.size()
int main(){
std::ios::sync_with_stdio(0);
std::cin.tie(0),std::cout.tie(0);
std::cin >> n >> k;
dfs(1,0);
std::cout << ans << '\n';
return 0;
}