#include #include using namespace std; int n; int table[20][500]; void MakeTable() { memset(table, 0, sizeof(table)); for(int i = 0; i < 400; ++i) table[1][i] = 1; for(int i = 2; i < 18; ++i) { int sq = i*i; for(int p = 400; p >= 0; --p) { int add = 0; for(int k = sq; k <= p; k += sq) { add += table[i-1][p-k]; } table[i][p] += table[i-1][p] + add; } // for(int j = 0; j < 400; ++j) } } int main() { MakeTable(); while(cin >> n && n) { cout << table[17][n] << endl; } }