using System; using System.Collections.Generic; using System.Text; using System.Linq; class Program { public void Proc() { Reader.IsDebug = false; this.TargetCount = int.Parse(Reader.ReadLine()); long ret = this.GetAns(0,0); long mul = ret * this.TargetCount / 31; long total = 0; for(int i=0; i<=30; i++) { total += (1<> dic = new Dictionary>(); private long TargetCount; private long GetAns(int idx, int cnt) { if(!dic.ContainsKey(idx)) { dic.Add(idx, new Dictionary()); } if(dic[idx].ContainsKey(cnt)) { return dic[idx][cnt]; } long ret = 0; if(idx >= 31) { if(cnt == TargetCount) { ret= 1; } return ret; } if(cnt > this.TargetCount) { return ret; } if(TargetCount - cnt > 31 - idx) { return ret; } long tmp = this.GetAns(idx + 1, cnt); long tmp2 = this.GetAns(idx + 1, cnt + 1); ret = tmp + tmp2; dic[idx].Add(cnt, ret); return ret; } public class Reader { public static bool IsDebug = true; private static String PlainInput = @" 31 "; private static System.IO.StringReader Sr = null; public static string ReadLine() { if (IsDebug) { if (Sr == null) { Sr = new System.IO.StringReader(PlainInput.Trim()); } return Sr.ReadLine(); } else { return Console.ReadLine(); } } } static void Main() { Program prg = new Program(); prg.Proc(); } }