Problem: Let s(x) be sum of digits in decimal representation of positive integer x. Given two integers n and m, find some positive integers a and b such that 

  * s(a) ≥ n, 
  * s(b) ≥ n, 
  * s(a + b) ≤ m. 

Input

The only line of input contain two integers n and m (1 ≤ n, m ≤ 1129).

Output

Print two lines, one for decimal representation of a and one for decimal representation of b. Both numbers must not contain leading zeros and must have length no more than 2230.

Examples

Input

6 5


Output

6 
7


Input

8 16


Output

35 
53

Note

In the first sample, we have n = 6 and m = 5. One valid solution is a = 6, b = 7. Indeed, we have s(a) = 6 ≥ n and s(b) = 7 ≥ n, and also s(a + b) = s(13) = 4 ≤ m.

Solution (in JAVA):

Solution:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
// package coding;

import java.io.*;
import java.math.BigInteger;
import java.util.*;

/**
 *
 * @author Mostafa
 */
public class Coding {

        /**
         * @param args the command line arguments
         */
    public static class FastReaderFile
    {
        BufferedReader br;
        StringTokenizer st;
        public FastReaderFile(InputStream in)
        {
            br = new BufferedReader(new
                     InputStreamReader(in));
        }
 
        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
 
        int nextInt()
        {
            return Integer.parseInt(next());
        }
 
        long nextLong()
        {
            return Long.parseLong(next());
        }
 
        double nextDouble()
        {
            return Double.parseDouble(next());
        }
 
        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }
    public static class FastReader
    {
        BufferedReader br;
        StringTokenizer st;
 
        public FastReader()
        {
            br = new BufferedReader(new
                     InputStreamReader(System.in));
        }
 
        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
 
        int nextInt()
        {
            return Integer.parseInt(next());
        }
 
        long nextLong()
        {
            return Long.parseLong(next());
        }
 
        double nextDouble()
        {
            return Double.parseDouble(next());
        }
 
        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }
 public static PrintWriter out;
    
    public static int ser ( int x[] , int start , int end , int val )
    {
        while ( start <= end )
	{
            int mid = ( start + end ) / 2 ;
            if ( x[ mid ] <= val )
                start = mid + 1 ;
            else
                end = mid - 1 ;
	}
        return -1 ;
    }
    
 public static  boolean isPrime( long n)
{
    // Corner cases
    if (n < 2)  return false;
    if (n < 4)  return true;

    if (n%2 == 0 || n%3 == 0) return false;

    for (long i = 5 ; i * i <= n ; i = i + 6 )
        if ( n % i == 0 || n % ( i + 2 ) == 0)
           return false ;

    return true;
}
    
 
    
    static long gcd(long a, long b) 
    {
        return b == 0 ? (a < 0 ? -a : a) : gcd(b, a % b);
    }

    
    static long lcm(long a, long b)
    {
        long lcm = (a / gcd(a, b)) * b;
        return lcm > 0 ? lcm : -lcm ;
    }
    
    
    
    public static int search( int x[] , int val )
    {
        return ser( x , 0 , x.length - 1 , val );
    }
    public static String remove ( String s , int i )
    {
        s = s.substring(0, i) + s.substring(i+1) ;
        return s ;
    }
    public static long ret( long a , long b   )
    {
            long c = Math.max(a, b);
            a = Math.min(a, b) ;
            out.println(c + "=("+a+")." + (c/a) + "+" + (c%a));
//            out.println(r);
            

        if ( c % a == 0 )
                    return a ;
            else
                return ret(c%a , a);
    }
    
    //    for (Map.Entry<Integer, Integer> e : x.entrySet()) 
    //            {
    //                e.getValue() , e.getKey
   
        public static void main(String[] args) throws FileNotFoundException {
//             TODO code application logic here
            FastReader in = new FastReader();
    //        Scanner in = new Scanner(System.in) ;
    //        FastReaderFile in = new FastReaderFile(new FileInputStream("fruits.in")) ;
            StringBuilder r = new StringBuilder();
            out = new PrintWriter(new BufferedOutputStream(System.out), true) ;
//            int n = in.nextInt() , m = in.nextInt() ;
            String s = "" , x = "";
            long a = 0 ;
            for ( int i = 1 ; i < 2200 ; ++i )
            {
                    s += '5';
                    x += '4' ;
                    a += 4 ;
            }
            s += '5';
            x += '5';
            
            out.println(s + "\n" + x );
        }
}