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.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;

public class MakingSequencesIsFun {
    public static void main(String[] args) {
        MyScanner sc = new MyScanner();
        
        long W = sc.nextLong();
        long M = sc.nextLong();
        long K = sc.nextLong();
        
        long[] pow10 = new long[19];
        pow10[0] = 1;
        for (int i = 1; i < pow10.length; i++) {
        	pow10[i] = 10 * pow10[i - 1];
        }
        
        long rem = W / K;
        long curr = M;
        long cnt = 0;
        for (int i = 0; i < pow10.length - 1; i++) {
        	if (curr < pow10[i]) {
        		long nums = pow10[i] - curr;
        		long cost = i * nums;
        		if (rem > cost) {
        			rem -= cost;
        			cnt += nums;
            		curr = pow10[i];
        		} else {
            		long left = rem / i;
            		cnt += left;
            		break;
            	}
        	}
        }
        System.out.println(cnt);
    }

    public static class MyScanner {
        BufferedReader br;
        StringTokenizer st;

        public MyScanner() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        int nextInt() {
            return Integer.parseInt(next());
        }
        
        int[] nextIntArray(int n) {
        	int[] arr = new int[n];
        	for (int i = 0; i < n; i++) {
        		arr[i] = nextInt();
        	}
        	return arr;
        }

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

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

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        String nextLine() {
            String str = "";
            try { str = br.readLine(); }
            catch (IOException e) { e.printStackTrace(); }
            return str;
        }
    }
}