source_code: import java.io.*;
  import java.util.*;
  
  public class A {
  
  	FastScanner in;
  	PrintWriter out;
  
  	void solve() {
  		long a = in.nextLong(), b = in.nextLong();
  
  		long ans = 0;
  		while (true) {
  			long div = a / b;
  			
  			ans += div;
  			a -= div * b;
  			
  			if (a == 0) {
  				break;
  			}
  			
  			long tmp = a;
  			a = b;
  			b = tmp;
  		}
  		
  		out.println(ans);
  	}
  	
  
  	void run() {
  		in = new FastScanner();
  		out = new PrintWriter(System.out);
  		solve();
  		out.close();
  	}
  
  	class FastScanner {
  		BufferedReader br;
  		StringTokenizer st;
  
  		public FastScanner() {
  			br = new BufferedReader(new InputStreamReader(System.in));
  		}
  
  		String nextToken() {
  			while (st == null || !st.hasMoreElements()) {
  				try {
  					st = new StringTokenizer(br.readLine());
  				} catch (IOException e) {
  					// TODO Auto-generated catch block
  					e.printStackTrace();
  				}
  			}
  			return st.nextToken();
  		}
  
  		int nextInt() {
  			return Integer.parseInt(nextToken());
  		}
  
  		long nextLong() {
  			return Long.parseLong(nextToken());
  		}
  
  		double nextDouble() {
  			return Double.parseDouble(nextToken());
  		}
  	}
  
  	public static void main(String[] args) {
  		new A().run();
  	}
  }
  