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 Main{
    
    private void doit(){
        InStream sc = new InStream();
        while(sc.hasNext()){
            long w = sc.nextLong();
            long m = sc.nextLong();
            long k = sc.nextLong();
            
            String s = m + "";
            int digit = s.length();
            long x = w / k;
            long res = 0;
            while(true){
                long nextm = pow(digit);
                long y = nextm - m;
                long z = y * digit;
                if(x <= z){
                    res += x / digit;
                    break;
                }
                res += y;
                x = x - z;
                digit++;
                m = nextm;
            }
            System.out.println(res);
        }
    }
    
    private long pow(int digit) {
        long res = 1;
        for(int i = 0; i < digit; i++){
            res *= 10;
        }
        return res;
    }

    class InStream{
        BufferedReader in;StringTokenizer st;
        public InStream() {
            this.in = new BufferedReader(new InputStreamReader(System.in));
            this.st = null;
        }
        String next() {
            while (st==null || !st.hasMoreTokens()) {
                try {
                    st = new StringTokenizer(in.readLine());
                } catch (Exception e) {}
            }
            return st.nextToken();
        }
        boolean hasNext(){
            try{
                st = new StringTokenizer(in.readLine());
                return true;
            }catch(Exception e){return false;}
        }
        int nextInt() { return Integer.parseInt(next());}
        long nextLong() {return Long.parseLong(next());}
        double nextDouble() {return Double.parseDouble(next());}
    }
    

    private void debug(Object... o) {
        System.out.println("debug = " + Arrays.deepToString(o));
    }

    public static void main(String[] args) {
        new Main().doit();
    }
}