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

public class cf373b {
  static FastIO in = new FastIO(), out = in;

  public static void main(String[] args) {
    long w = in.nextLong();
    long m = in.nextLong();
    long k = in.nextLong();
    long digits = w/k;
    long lo = 0, hi = (long)1e16;
    while(hi - lo > 2) {
      long mid = (hi+lo)/2;
      if(cost(m,mid) > digits) hi = mid;
      else lo = mid;
    }
    while(cost(m,hi) > digits) hi--;
    out.println(hi);
    out.close();
  }
  
  static long cost(long a, long b) {
    return cost(a+b-1) - cost(a-1);
  }
  
  static long cost(long x) {
    if(x == 0) return 0;
    long ret = 0;
    long pow10 = 1, cost = 1;
    while(pow10*10 <= x) {
      ret += pow10 * 9 * cost;
      pow10 *= 10;
      cost++;
    }
    return ret + (x-pow10+1)*cost;
  }

  static class FastIO extends PrintWriter {
    BufferedReader br;
    StringTokenizer st;

    public FastIO() {
      this(System.in, System.out);
    }

    public FastIO(InputStream in, OutputStream out) {
      super(new BufferedWriter(new OutputStreamWriter(out)));
      br = new BufferedReader(new InputStreamReader(in));
      scanLine();
    }

    public void scanLine() {
      try {
        st = new StringTokenizer(br.readLine().trim());
      } catch (Exception e) {
        throw new RuntimeException(e.getMessage());
      }
    }

    public int numTokens() {
      if (!st.hasMoreTokens()) {
        scanLine();
        return numTokens();
      }
      return st.countTokens();
    }

    public String next() {
      if (!st.hasMoreTokens()) {
        scanLine();
        return next();
      }
      return st.nextToken();
    }

    public double nextDouble() {
      return Double.parseDouble(next());
    }

    public long nextLong() {
      return Long.parseLong(next());
    }

    public int nextInt() {
      return Integer.parseInt(next());
    }
  }
}
