#include /* * 28-Z2-1: Práce pro Sáru * Autor: Tomáš Maleček */ #define MAX 16284 int steps[MAX]; long int new_number(long int number){ if(number % 2 == 0){ number /= 2; }else{ number = number*3 + 1; } return number; } long int calc_steps(long int number){ if (number == 1) return 0; if (number < MAX && steps[number] > 0) return steps[number]; long steps_needed = 1 + calc_steps(new_number(number)); if (number < MAX) steps[number] = steps_needed; return steps_needed; } int main(void){ long int L; scanf("%ld", &L); if(L < 0){ fprintf(stderr, "Number of cases have to be more than 0. It is %ld.", L); return 1; } steps[1] = 0; while(L --> 0){ long int min,max; scanf("%ld %ld", &min, &max); if(!(0 < min && min <= max && max <= 10000000)){ fprintf(stderr, "Min(%ld) have to be more than 0 and have to be less than max(%ld).", min, max); return 1; } int max_steps = 0, for_number = 1; for(long int i = min; i <= max; i++){ long int temp_steps = calc_steps(i); if(temp_steps > max_steps){ max_steps = temp_steps; for_number = i; } } printf("%d %d\n", max_steps, for_number); } return 0; }