Description:
Accept:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+10, mod=1e9+7;
ll a[maxn], n, b, dp[maxn];
ll Max_length(){
// dp[1]=1;
for(int i=2;i<=n;i++){
for(int j=1;j<i;j++){
if(a[i]>a[j])dp[i]=max(dp[i], dp[j]+1);
}
}
// for(int i=1;i<=n;i++){
// cout<<dp[i]<<" ";
// }cout<<endl;
ll ans=0;for(int i=1;i<=n;i++)ans=max(ans, dp[i]);
return ans;
}
int main()
{
scanf("%lld%lld", &n, &b);
a[1] = b;
for(int i = 2; i <= n; i ++) {
a[i] = 1LL * (a[i - 1] + 1) * (a[i - 1] + 1) % mod;
}
// for(int i=1;i<=n;i++){
// cout<<a[i]<<" ";
// }cout<<endl;
for(int i=1;i<=n;i++)dp[i]=1;
printf("%lld\n", Max_length());
return 0;
}