using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = ReadLine(); var mod1 = 1_000_000_000; var mod2 = 1_000_000_007; var ans1 = (long)n[0] - '1'; var ans2 = (long)n[0] - '1'; var len = (n.Length + 1) / 2; for (var i = 1; i < len; ++i) { ans1 = (ans1 * 10 + n[i] - '0') % mod1; ans2 = (ans2 * 10 + n[i] - '0') % mod2; } ans1 = (ans1 + 1) % mod1; ans2 = (ans2 + 1) % mod2; var t = n.ToCharArray(); for (var i = 0; i < len; ++i) t[t.Length - i - 1] = t[i]; for (var i = 0; i < t.Length; ++i) { if (t[i] == n[i]) continue; if (t[i] > n[i]) { ans1 = (ans1 - 1 + mod1) % mod1; ans2 = (ans2 - 1 + mod2) % mod2; } break; } var mul1 = 9L; var mul2 = 9L; for (var i = 1; i < n.Length; ++i) { ans1 = (ans1 + mul1) % mod1; ans2 = (ans2 + mul2) % mod2; if (i % 2 == 0) { mul1 = mul1 * 10 % mod1; mul2 = mul2 * 10 % mod2; } } WriteLine(ans1); WriteLine(ans2); } }