1. //Utkarsh.25dec
  2. #include <bits/stdc++.h>
  3. #define ll long long int
  4. #define pb push_back
  5. #define mp make_pair
  6. #define mod 1000000007
  7. #define vl vector <ll>
  8. #define all(c) (c).begin(),(c).end()
  9. using namespace std;
  10. ll power(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
  11. ll modInverse(ll a){return power(a,mod-2);}
  12. const int N=500023;
  13. bool vis[N];
  14. vector <int> adj[N];
  15. long long readInt(long long l,long long r,char endd){
  16. long long x=0;
  17. int cnt=0;
  18. int fi=-1;
  19. bool is_neg=false;
  20. while(true){
  21. char g=getchar();
  22. if(g=='-'){
  23. assert(fi==-1);
  24. is_neg=true;
  25. continue;
  26. }
  27. if('0'<=g && g<='9'){
  28. x*=10;
  29. x+=g-'0';
  30. if(cnt==0){
  31. fi=g-'0';
  32. }
  33. cnt++;
  34. assert(fi!=0 || cnt==1);
  35. assert(fi!=0 || is_neg==false);
  36.  
  37. assert(!(cnt>19 || ( cnt==19 && fi>1) ));
  38. } else if(g==endd){
  39. if(is_neg){
  40. x= -x;
  41. }
  42.  
  43. if(!(l <= x && x <= r))
  44. {
  45. cerr << l << ' ' << r << ' ' << x << '\n';
  46. assert(1 == 0);
  47. }
  48.  
  49. return x;
  50. } else {
  51. assert(false);
  52. }
  53. }
  54. }
  55. string readString(int l,int r,char endd){
  56. string ret="";
  57. int cnt=0;
  58. while(true){
  59. char g=getchar();
  60. assert(g!=-1);
  61. if(g==endd){
  62. break;
  63. }
  64. cnt++;
  65. ret+=g;
  66. }
  67. assert(l<=cnt && cnt<=r);
  68. return ret;
  69. }
  70. long long readIntSp(long long l,long long r){
  71. return readInt(l,r,' ');
  72. }
  73. long long readIntLn(long long l,long long r){
  74. return readInt(l,r,'\n');
  75. }
  76. string readStringLn(int l,int r){
  77. return readString(l,r,'\n');
  78. }
  79. string readStringSp(int l,int r){
  80. return readString(l,r,' ');
  81. }
  82. int isgood[(1<<20)+1]={0};
  83. int badnumbers[(1<<20)+1]={0};
  84. void solve()
  85. {
  86. int n=readInt(1,60,'\n');
  87. isgood[0]=1;
  88. for(int i=1;i<(1<<20);i++)
  89. {
  90. int j;
  91. for(j=19;j>=0;j--)
  92. {
  93. if((i&(1<<j))!=0)
  94. break;
  95. }
  96. int ele=j+1;
  97. int msk=(i^(1<<j));
  98. if(isgood[msk]==0)
  99. {
  100. isgood[i]=0;
  101. continue;
  102. }
  103. isgood[i]=1;
  104. badnumbers[i]=badnumbers[msk];
  105. for(int j=0;j<20;j++)
  106. {
  107. if((msk&(1<<j))!=0)
  108. {
  109. if((ele%(j+1))==0)
  110. badnumbers[i]|=(1<<(ele-1));
  111. }
  112. }
  113. int badmsk=badnumbers[msk];
  114. for(int j=0;j<20;j++)
  115. {
  116. if((badmsk&(1<<j))!=0)
  117. {
  118. if((ele%(j+1))==0)
  119. {
  120. isgood[i]=0;
  121. break;
  122. }
  123. }
  124. }
  125. }
  126. if(n<=20)
  127. {
  128. ll ans=0;
  129. for(int i=0;i<(1<<n);i++)
  130. ans+=isgood[i];
  131. cout<<ans<<'\n';
  132. }
  133. else
  134. {
  135. ll ans=0;
  136. for(int i=0;i<(1<<20);i++)
  137. {
  138. if(isgood[i]==0)
  139. continue;
  140. int mark[n+1]={0};
  141. int ele=n-20;
  142. for(int j=0;j<20;j++)
  143. {
  144. if((badnumbers[i]&(1<<j))!=0)
  145. {
  146. for(int k=2*(j+1);k<=n;k+=(j+1))
  147. {
  148. if(k<=20)
  149. continue;
  150. if(mark[k]==1)
  151. continue;
  152. mark[k]=1;
  153. ele--;
  154. }
  155. }
  156. }
  157. vector <pair<int,int>> v;
  158. for(int x=21;x<=n;x++)
  159. {
  160. if(2*x>n)
  161. break;
  162. if(mark[x]==1 || mark[2*x]==1)
  163. continue;
  164. for(int y=1;y<=20;y++)
  165. {
  166. if(x%y==0 && (i&(1<<(y-1)))!=0)
  167. {
  168. ele-=2;
  169. v.pb(mp(x,2*x));
  170. break;
  171. }
  172. }
  173. }
  174. ans+=(1LL<<ele)*power(3,v.size());
  175. }
  176. cout<<ans<<'\n';
  177. }
  178. }
  179. int main()
  180. {
  181. #ifndef ONLINE_JUDGE
  182. freopen("input.txt", "r", stdin);
  183. freopen("output.txt", "w", stdout);
  184. #endif
  185. ios_base::sync_with_stdio(false);
  186. cin.tie(NULL),cout.tie(NULL);
  187. int T=1;
  188. //cin>>T;
  189. while(T--)
  190. solve();
  191. cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";
  192. }