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.util.*;
import java.io.*;
public class Main { 		// <- название класса туда
	static class Out{
		private Formatter out;
		final static String EOL="\r\n";
		public Out(PrintStream a) {out=new Formatter(a);}
		public Out(String a) throws FileNotFoundException {out=new Formatter(a);}
		public void close() {out.close();}
		public void print(String a) {out.format(a);}
		public void println(){out.format(EOL);}
		public void println(String a){out.format(a+EOL);}
		public void flush(){out.flush();}
	}
	static boolean IOtypeisFile=false; 	// <- ввод/вывод идёт в качестве файла? (если ввод/вывод файл-true, если консоль-false)
	static String FileInput="C:\\Intel\\a.in", //<- название файла-ввода cюда
				  FileOutput="C:\\Intel\\a.out";// <- название файла-вывода туда
	static Scanner in;
	static Out out;
	private static String ts(Object a) {return String.valueOf(a);}
	private static int[] applyLine(int n) {int[] ans=new int[n];for(int i=0;i<n;i++){ans[i]=in.nextInt();}in.nextLine();return ans;}
	public static void main(String[] args) {
		if (IOtypeisFile) {
			File f =new File(FileInput);
			try {
				in=new Scanner(f); 
				out=new Out(FileOutput);
			} catch (FileNotFoundException e) {System.err.println(e);}
		} else {
			in=new Scanner(System.in);
			out=new Out(System.out);
		}
		Solution();
		in.close();
		out.close();
	}
	//Код пишут отсюда |
	//				   V
	private static void Solution(){
		long x=in.nextLong(),y=in.nextLong(),m=in.nextLong();
		long ans=0;
		if ((x<m)&&(y<m)) {
			if ((x>0)||(y>0)) {
				if (x<0) {ans-=x/y;x-=(x/y)*y;}
				else if (y<0) {ans-=y/x;y-=(y/x)*x;}
				for (;(x<m)&&(y<m);ans++) {
					if (x>y) {y+=x;}
					else {x+=y;}
				}
			} else {ans=-1;}
		}
		out.println(ts(ans));
	}
}