#include #include #include #include #include using namespace std; vector Coins; int Ans; void search(int n, int index) { if(n < 0) { return; } if(n == 0) { Ans++; return; } for(int i = index; i >= 0; i--) { search(n-Coins[i], i); } } int main() { Coins.clear(); for(int i = 1; i <= 17; i++) { Coins.push_back(i*i); } int N; while(cin >> N && N) { Ans = 0; search(N, Coins.size()-1); cout << Ans << endl; } }