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

public class win {
	public static void main(String[] args) throws Exception {
		FastScanner sc = new FastScanner(System.in);
		long W = sc.nextLong();
		long M = sc.nextLong();
		long K = sc.nextLong();
		W/=K;
		W+=magic(M-1);
		long low = -1;
		long high = 20000000000000000L;
		long mid = 42;
		long ans = -1;
		while(low<=high){
			mid = (low+high)/2;
		//	System.err.println(mid+" "+magic(mid)+" "+W);
			if(magic(mid)<=W){
				ans=mid;
				low = mid+1;
			}
			else{
				high = mid-1;
			}
		}
		ans-=M;
		System.out.println(ans+1);
	}
	private static long magic(long m) {
		long ans = 0;
		while(m!=0){
			long highestBase = 1;
			while(highestBase*10<=m){
				highestBase*=10;
			}
			ans+=(m-highestBase+1)*(""+highestBase).length();
			m=highestBase-1;
		}
		return ans;
	}
	private static long cost(long m) {
		return (""+m).length();
	}
	static class FastScanner {

		BufferedReader br;

		StringTokenizer st;

		public FastScanner(InputStream in) throws Exception {

			br = new BufferedReader(new InputStreamReader(in));

			st = new StringTokenizer(br.readLine().trim());

		}

		public int numTokens() throws Exception {

			if (!st.hasMoreTokens()) {

				st = new StringTokenizer(br.readLine().trim());

				return numTokens();

			}

			return st.countTokens();

		}

		public String next() throws Exception {

			if (!st.hasMoreTokens()) {

				st = new StringTokenizer(br.readLine().trim());

				return next();

			}

			return st.nextToken();

		}

		public double nextDouble() throws Exception {

			return Double.parseDouble(next());

		}

		public float nextFloat() throws Exception {

			return Float.parseFloat(next());

		}

		public long nextLong() throws Exception {

			return Long.parseLong(next());

		}

		public int nextInt() throws Exception {

			return Integer.parseInt(next());

		}

		public String nextLine() throws Exception {

			return br.readLine().trim();

		}

	}

}
