#include int count[18]; int n; int saiki(int sum, int index) { int ret = 0; if (sum == 0) { return 1; } else if (index <= 0) { return 0; } else if (sum < 0) { return 0; } else { for (int j = 0; sum - index * index * j >= 0; j++) { ret += saiki(sum - index * index * j, index - 1); } } return ret; } int main() { while (cin >> n && n) { cout << saiki(n, 17) << endl; } return 0; }