#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
// Used for memoization
unordered_map<unsigned int, unsigned long int> m;
unsigned long int count(const int n, const unsigned int k, const string s)
{
unsigned long int res=0;
// Jumped over
if(n<0) return 0;
// Last jump is valid
if(n==0) { cout << s << endl; return 1;}
for(unsigned int i=1;i<=k; ++i)
{
count(n-i,k, s + (s==""?"":",") + to_string(i));
//if(m.find(n-i) == m.end()) { m[n-i] = count(n-i,k, s + "," + to_string(i)); }
//res += m[n-i];
}
return res;
}
int main() {
// your code goes here
cout << count(4, 3, "") << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHN0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIFVzZWQgZm9yIG1lbW9pemF0aW9uIAp1bm9yZGVyZWRfbWFwPHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyBpbnQ+IG07IAoKdW5zaWduZWQgbG9uZyBpbnQgY291bnQoY29uc3QgaW50IG4sIGNvbnN0IHVuc2lnbmVkIGludCBrLCBjb25zdCBzdHJpbmcgcykKewoJdW5zaWduZWQgbG9uZyBpbnQgcmVzPTA7IAoJCgkvLyBKdW1wZWQgb3ZlciAKCWlmKG48MCkgcmV0dXJuIDA7IAoJCgkvLyBMYXN0IGp1bXAgaXMgdmFsaWQgCgkKCWlmKG49PTApIHsgY291dCA8PCBzIDw8IGVuZGw7IHJldHVybiAxO30gCglmb3IodW5zaWduZWQgaW50IGk9MTtpPD1rOyArK2kpIAoJewoJCWNvdW50KG4taSxrLCBzICsgKHM9PSIiPyIiOiIsIikgKyB0b19zdHJpbmcoaSkpOwoJCS8vaWYobS5maW5kKG4taSkgPT0gbS5lbmQoKSkgeyBtW24taV0gPSBjb3VudChuLWksaywgcyArICIsIiArIHRvX3N0cmluZyhpKSk7IH0KCQkvL3JlcyArPSBtW24taV07IAoJfQoJCglyZXR1cm4gcmVzOyAKfQoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgljb3V0IDw8IGNvdW50KDQsIDMsICIiKSA8PCBlbmRsOyAKCXJldHVybiAwOwp9
1,1,1,1
1,1,2
1,2,1
1,3
2,1,1
2,2
3,1
0