1.

    /**
     * Angewandte Mathematik, SS09, IFB 2C
     * ACM Problem #944 (Happy Numbers)
     * Link: http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=23&page=show_problem&problem=136
     *
     * @author Fabian Seidl
     * @author Marcel Sachse
     * @version 1.0, 08.04.2009
     *
     * Status : Accepted
     * Runtime: 0.590
     */



import java.io.*;
import java.util.Scanner;


public class Main {
   
    private static int[] cache;
   

    public static void main(String[] args) throws Exception
    {
       
        cache = new int[100000];
        // 1 vorbelegen
        cache[1]=1;
        // unhappy Numbers vorbelegen
        cache[4]= Integer.MIN_VALUE;
        cache[89]= Integer.MIN_VALUE;
       
       BufferedInputStream bInput = new BufferedInputStream(System.in);
       Scanner scanner = new Scanner(bInput);
       
       Writer out = new BufferedWriter(new PrintWriter(System.out));
      
       boolean firstInterval = true;
      
        while(scanner.hasNextInt())
        {
            int start;
            int end;
           
            // Eingabe
            try
            {
                start = scanner.nextInt();
                if(!scanner.hasNextInt()) break;
                end =  scanner.nextInt();
            }
            catch(Exception ex)
            {
                return;
            }
           
            // Berechnung und Ausgabe
           
            if(firstInterval==false) out.write("\n");
            firstInterval=false;
           
            for(int i=start;i<=end;i++)
            {
                int happy = isHappyRec(i);
                if(happy>0)
                    out.write(i + " "+ happy+"\n");
            }
           
           
        }
       
        out.close();
       
    }
   
    private static int isHappyRec(int si)
    {
        // pr¾fen ob im cache
        int cacheVal = cache[si];
        if(cacheVal!=0) return cacheVal;
       
        // Ziffer quadrieren und summieren
        int digits = si;
        int next=0;
        while(digits!=0)
        {
            int digit = digits%10;
            next+=digit*digit;
            digits/=10;
        }
       
        // n¦chste Stufe
        int result = isHappyRec(next)+1;
        cache[si] = result; // berechneten Wert im Cache speichern
        return result;
    }

   
}