Let us call a pair of integer numbers m-perfect, if at least one number in the pair is greater than or equal to m. Thus, the pairs (3, 3) and (0, 2) are 2-perfect while the pair (-1, 1) is not.

Two integers x, y are written on the blackboard. It is allowed to erase one of them and replace it with the sum of the numbers, (x + y).

What is the minimum number of such operations one has to perform in order to make the given pair of integers m-perfect?

Input

Single line of the input contains three integers x, y and m ( - 1018 ≤ x, y, m ≤ 1018).

Please, do not use the %lld specifier to read or write 64-bit integers in C++. It is preffered to use the cin, cout streams or the %I64d specifier.

Output

Print the minimum number of operations or "-1" (without quotes), if it is impossible to transform the given pair to the m-perfect one.

Examples

Input

1 2 5


Output

2


Input

-1 4 15


Output

4


Input

0 -1 5


Output

-1

Note

In the first sample the following sequence of operations is suitable: (1, 2) <image> (3, 2) <image> (5, 2).

In the second sample: (-1, 4) <image> (3, 4) <image> (7, 4) <image> (11, 4) <image> (15, 4).

Finally, in the third sample x, y cannot be made positive, hence there is no proper sequence of operations.
import static java.lang.System.*;
import static java.lang.Math.*;
import java.util.*;

public class C318{
    public static Scanner sc = new Scanner(in);
    //public static Random sc=new Random();

    public void run(){
        long x=sc.nextLong(),y=sc.nextLong(),m=sc.nextLong();

        long[] fib=new long[92];
        long prev1=1,prev2=0;
        fib[0]=0;
        fib[1]=1;
        for(int i=2;i<92;i++){
            fib[i]=prev1+prev2;
            prev2=prev1;
            prev1=fib[i];
        }

        if(x>y){
            long tmp=y;
            y=x;
            x=tmp;
        }
        if(x<=0 && y<=0){
            if(y>=m)ln(0);
            else ln(-1);
            return;
        }
        if(x<=0 && y>0){
            if(y>=m)ln(0);
            else{
                //plus
                long t=abs(x)/y+1;
                x+=t*y;
                if(x>y){
                    long tmp=y;
                    y=x;
                    x=tmp;
                }
                int i=0;
                for(i=0;m>x*fib[i]+y*fib[i+1];i++);
                ln(i+t);
            }
            return;
        }
        int i=0;
        for(i=0;m>x*fib[i]+y*fib[i+1];i++);
        ln(i);
   }

    public static void main(String[] _) {
        new C318().run();
    }

    public int[] nextIntArray(int n){
        int[] res=new int[n];
        for(int i=0;i<n;i++){
            res[i]=sc.nextInt();
        }
        return res;
    }
    public static void pr(Object o) {
        out.print(o);
    }
    public static void ln(Object o) {
        out.println(o);
    }
    public static void ln() {
        out.println();
    }

}