import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;


public class collatz {
	
	private static int makeNext(int i) {
		return i % 2 == 0 ? i/2 : 3*i+1;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException {
		StringWriter writer = new StringWriter();
		BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
		String line = bfr.readLine();
		StringTokenizer tokenizer;
		while(!line.equals("0 0")) {
			tokenizer = new StringTokenizer(line);
			int i = Integer.valueOf(tokenizer.nextToken());
			int j = Integer.valueOf(tokenizer.nextToken());
			int same = -1;
			boolean nextI = true;
			boolean nextJ = true;
			ArrayList<Integer> iList = new ArrayList<Integer>();
			ArrayList<Integer> jList = new ArrayList<Integer>();
			iList.add(i);
			jList.add(j);
			while(true) {
				if(iList.contains(j)) {
					same = j;
					break;
				} else if (jList.contains(i)){
					same = i;
					break;
				}
				if(nextI) {
					i = makeNext(i);
					iList.add(i);
				}
				if(nextJ) {
					j = makeNext(j);
					jList.add(j);
				}
				if(i == 1) nextI = false;
				if(j == 1) nextJ = false;
			}
			writer.write(iList.get(0) + " needs " + iList.indexOf(same) + " steps, " + jList.get(0) + " needs " + jList.indexOf(same) + " steps, they meet at " + same + "\n");
			line = bfr.readLine();
		}
		System.out.print(writer);
	}

}
