classSolution{
public:staticconstlonglong mod =1e9 +7;intfib(int n){
if(n ==0|| n ==1)return n;int a =0, b =1;for(int ii =2; ii <= n; ii++){
int temp = b;
b =(int)(a + b)% mod;
a = temp;}return b;}};
classSolution{
public:staticconstlonglong mod =1e9 +7;intfib(int n){
if(n ==0|| n ==1)return n;
vector<int>dp(n+1,-1);
dp[0]=0;
dp[1]=1;for(int ii =2; ii <= n; ii++){
longlong a = dp[ii -1], b = dp[ii -2];
dp[ii]=(int)(a + b)% mod;}return dp[n];}};
classSolution{
public:staticconstlonglong mod =1e9 +7;
vector<int> V =vector<int>(110,-1);intfib(int n){
if(n ==0|| n ==1)return n;if(V[n]!=-1)return V[n];longlong a =fib(n -1), b =fib(n -2);
V[n]=(int)((a + b)% mod);return V[n];}};