We'll define S(n) for positive integer n as follows: the number of the n's digits in the decimal base. For example, S(893) = 3, S(114514) = 6.

You want to make a consecutive integer sequence starting from number m (m, m + 1, ...). But you need to pay S(n)·k to add the number n to the sequence.

You can spend a cost up to w, and you want to make the sequence as long as possible. Write a program that tells sequence's maximum length.

Input

The first line contains three integers w (1 ≤ w ≤ 1016), m (1 ≤ m ≤ 1016), k (1 ≤ k ≤ 109).

Please, do not write the %lld specifier to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64d specifier.

Output

The first line should contain a single integer — the answer to the problem.

Examples

Input

9 1 1


Output

9


Input

77 7 7


Output

7


Input

114 5 14


Output

6


Input

1 1 2


Output

0
/* package whatever; // don't place package name! */

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

/* Name of the class has to be "Main" only if the class is public. */
public class Ideone
{
    public static long Find(long w, long floor, long cap, long k, long digs){
        //System.out.println(digs);
        long num = cap - floor + 1;
        long numk = w / (k * digs);
        return Math.min(num, numk);
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        MyScanner sc = new MyScanner();
        out = new PrintWriter(new BufferedOutputStream(System.out));
        
        long w = sc.nextLong();
        long m = sc.nextLong();
        long k = sc.nextLong();
        long t = m;
        long cap = 0;
        long floor = 1;
        long digs = 0;
        while (t > 0){
            cap = cap * 10 + 9;
            digs++;
            t /= 10;
            if (t == 0) break;
            floor = floor*10;
        }
        
        long res = 0;
        long init = m;
        while (w > 0){
            
            long f = Find(w, init, cap, k, digs);
            res += f;
            w -= (f*k*digs);
            //out.println(init + " " + cap + " " + f + " " + f*k*digs + " " + w);
            if (f == 0) break;
            cap = cap*10 + 9;
            floor *= 10;
            init = floor;
            digs++;
        }
        out.print(res);
        out.close();
    }
    //-----------PrintWriter for faster output---------------------------------
   public static PrintWriter out;
      
   //-----------MyScanner class for faster input----------
   public static class MyScanner {
      BufferedReader br;
      StringTokenizer st;
 
      public MyScanner() {
         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;
      }

   }
   //--------------------------------------------------------
}