int fastfib(int n){
  int previous1Fib = 1; // Fib(n - 1)
  int previous2Fib = 0; // Fib(n - 2)
  int presentFib; // Fib(n)
  int i;
        
  if(n < 0){
    return -1;
  }else if(n == 0){
    return 0;
  }else if(n == 1){
    return 1;
  }else{
    for(i = 1; i < n; i++){
      presentFib = previous1Fib + previous2Fib;
                        
      if(presentFib < previous1Fib){
        return -2;
      }
      previous2Fib = previous1Fib;
      previous1Fib = presentFib;
    }
  }

  return presentFib;
}
