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.
import java.io.*;
import java.util.*;

@SuppressWarnings("WeakerAccess")
public class Main {

    final boolean ONLINE_JUDGE = System.getProperty("ONLINE_JUDGE") != null;
    BufferedReader in;
    PrintWriter out;
    StringTokenizer tok = new StringTokenizer("");

    public static void main(String[] args) {
        new Main().run();
        // Sworn to fight and die
    }

    void init() throws FileNotFoundException {
        if (ONLINE_JUDGE) {
            in = new BufferedReader(new InputStreamReader(System.in));
            out = new PrintWriter(System.out);
        } else {
            in = new BufferedReader(new FileReader("input.txt"));
            out = new PrintWriter("output.txt");
        }
    }

    String readString() throws IOException {
        while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine());
        }
        return tok.nextToken();
    }

    int readInt() throws IOException {
        return Integer.parseInt(readString());
    }

    long readLong() throws IOException {
        return Long.parseLong(readString());
    }

    double readDouble() throws IOException {
        return Double.parseDouble(readString());
    }

    public void run() {
        try {
            long t1 = System.currentTimeMillis();
            init();
            solve();
            out.close();
            long t2 = System.currentTimeMillis();
            System.err.println("Time = " + (t2 - t1));
        } catch (Exception e) {
            e.printStackTrace(System.err);
            System.exit(-1);
        }
    }

    class Point {
        double [] a;

        public Point(int n) {
            this.a = new double[n];
        }

        double scalar(Point b) {
            double result = 0;
            for (int i = 0; i < a.length; i++) {
                result += a[i] * b.a[i];
            }

            return result;
        }

        double len() {
            double res = 0;

            for (int i = 0; i < a.length; i++) {
                res += (a[i] * a[i]);
            }

            return Math.sqrt(res);
        }

        double dist(Point b) {
            double res = 0;

            for (int i = 0; i < a.length; i++) {
                res += ((a[i] - b.a[i]) * (a[i] - b.a[i]));
            }

            return Math.sqrt(res);
        }

        void alphaScalar(double alpha) {
            for (int i = 0; i < a.length; i++) {
                a[i] *= alpha;
            }
        }

    }

    public class LOL implements Comparable<LOL> {
        int a;
        int b;
        public LOL(int a, int b) {
            this.a = a;
            this.b = b;
        }
        public int compareTo(LOL o) {

            int xCompare = Integer.compare(o.a, a);

            if (xCompare != 0) {
                return xCompare;
            }

            return Integer.compare(o.b, b);
        }
    }



    public void solve() throws IOException {
        int n = readInt();
        int m = readInt();

        for (int i = 0; i < n; i++) {
            out.print(1);
        }
        out.println();
        for (int i = 0; i < n - 1; i++) {
            out.print(8);
        }
        out.print(9);

    }

}