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 java.io.*;
import java.util.*;
public class j
{
public static void main(String aa[])
{
BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
try
{
long k=0,n=0,m=0,c1=0,b1=1,a1=0,p=0,t=0;
String s;
s=b.readLine();
StringTokenizer c=new StringTokenizer(s);
m=Long.parseLong(c.nextToken());
n=Long.parseLong(c.nextToken());
k=Long.parseLong(c.nextToken());
if(k<=0)
{
if(k>m&&k>n)
System.out.print("-1");
if(k<=m||k<=n)
System.out.print("0");
}
else
{
if(k<=m||k<=n)
System.out.print("0");
else
{
if(m<=0&&n<=0)
{
System.out.print("-1");
System.exit(0);
}
if(m>0&&n>0)
{
while(c1<Math.pow(10,18))
{
c1=a1+b1;
a1=b1;
b1=c1;
t=a1*(long)Math.min(m,n)+b1*(long)Math.max(m,n);
p++;
if(t>=k)
{
System.out.print(p);
System.exit(0);
}
}
System.out.print("-1");
System.exit(0);
}
p+=(long)Math.ceil(((1-Math.min(m,n))/Math.max(m,n))+1);
if(n<=0)
n+=(long)Math.ceil(((1-Math.min(m,n))/Math.max(m,n))+1)*m;
if(m<=0)
m+=(long)Math.ceil(((1-Math.min(m,n))/Math.max(m,n))+1)*n;
while(c1<Math.pow(10,18))
{
c1=a1+b1;
a1=b1;
b1=c1;
t=a1*(long)Math.min(m,n)+b1*(long)Math.max(m,n);
p++;
if(t>=k)
{
System.out.print(p);
System.exit(0);
}
}
System.out.print("-1");
System.exit(0);
}
}
}
catch(Exception e){}
}
}