import java.util.*;
import java.lang.*;
import java.io.*;

class Num implements Comparable<Num>
{
    int n;
    int[] m = new int[10];

    public Num()
    {
        n = 1;
    }

    private Num(Num num, int i)
    {
        n = num.n * i;
        m = Arrays.copyOf(num.m, num.m.length);
        m[i]++;
    }

    @Override
    public String toString()
    {
        return String.format("%5d = 1 * 3^%d * 5^%d * 7^%d", n, m[3], m[5], m[7]);
    }

    @Override
    public int compareTo(Num o)
    {
        return Integer.compare(n, o.n);
    }



    public static void main(String[] args)
    {
        int[] multiplier = { 3, 5, 7 };

        TreeSet<Num> result = new TreeSet<Num>();
        TreeSet<Num> queue = new TreeSet<Num>();
        queue.add(new Num());
        while (result.size() < 100)
        {
            Num num = queue.pollFirst();
            result.add(num);

            for (int i : multiplier)
            {
                queue.add(new Num(num, i));
            }
        }

        for (int i = 1; i <= 100; i++)
        {
            System.out.printf("%03d: %s%n", i, result.pollFirst());
        }
    }
}
