using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; class TEST{ static void Main(){ Sol mySol =new Sol(); mySol.Solve(); } } class Sol{ public void Solve(){ Console.WriteLine(calc((long) 1e9)); Console.WriteLine(calc((long) 1e9 + 7)); } long calc(long mod){ int N = S.Length; if(N == 1){ return (long) (S[0] - '0') ;} if(N == 2){ long vv = long.Parse(S); long cnt = 9; for(int i=10;i<=vv;i++){ var str = i.ToString(); if(str[0] == str[1]) cnt++; } return cnt; } long sum = 0; long v = 9; long last = 1; for(int i=1;i= 0) sum += 1; sum %= mod; return sum; } int cmp(String S, char[] ca){ for(int i=0;i ca[i]) return 1; if(S[i] < ca[i]) return -1; } return 0; } String S; public Sol(){ S = rs(); } static String rs(){return Console.ReadLine();} static int ri(){return int.Parse(Console.ReadLine());} static long rl(){return long.Parse(Console.ReadLine());} static double rd(){return double.Parse(Console.ReadLine());} static String[] rsa(char sep=' '){return Console.ReadLine().Split(sep);} static int[] ria(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>int.Parse(e));} static long[] rla(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>long.Parse(e));} static double[] rda(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>double.Parse(e));} }