long Fibonacci(long Rank) { long n1,n2; if (Rank==0) return 0; if (Rank<=2) return 1; Rank-=3; n2 = 1; if (Rank & 1) { n1 = 2; Rank--; } do { n2 = n1 + n2; n1 = n1 + n2; } while(Rank-=2) return n1+n2; }