#include<iostream>
using namespace std;
int coin[18];
int dp[301];
int a,b,c,d,n;
int main(){
  for(int i=0;i<=300;i++)dp[i]=1;
  for(int i=2;i<=17;i++){
    for(int j=i*i;j<=300;j++){
      a=i*i;
      dp[j]+=dp[j-a];
    }
  }
  //for(int i=1;i<=30;i++)cout<<dp[i]<<endl;


  while(true){
    cin>>n;
    if(n==0)break;
    cout<<dp[n]<<endl;
  }
  return 0;
}