using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
Console.WriteLine(Fib(7,new Dictionary<int,int>()).ToString());
}
public static int Fib(int n,Dictionary<int,int> d){
if(n==0 || n==1){
if(d==null)
d=new Dictionary<int,int>();
if(!d.ContainsKey(n)){
d.Add(n,n);
//Console.Write(n.ToString()+",");
return n;
if(d.ContainsKey(n))
return d[n];
int fibn=Fib(n-1,d)+Fib(n-2,d);
if(n>2)
d.Remove(n-2);
d.Add(n,fibn);
//Console.Write(fibn.ToString()+",");
return fibn;