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.util.*;
import java.io.*;
import java.math.*;
 
public class TaskB{

    public static void main(String[] args){
    	InputStream inputStream = System.in;
    	OutputStream outputStream = System.out;
    	
    	InputReader in = new InputReader(inputStream);
    	OutputWriter out = new OutputWriter(outputStream);
    	
    	
    	long w = in.nextLong();
    	long m = in.nextLong();
    	long k = in.nextLong();
    	
    	w/=k;
    	
    	long ans=0;
    	long cur=m;
    	long next=1;
    	long c=1;
    	while(next<=cur){
    		next*=10L;
    		c++;
    	}
    	while(w>0){
    		if((next-cur)*(c-1)<=w){
    			ans+=next-cur;
    			w-=(next-cur)*(c-1);
    		}else{
    			ans+=w/((c-1));
    			w=0;
    		}
    		
    		cur=next;
    		next*=10L;
    		c++;
    	}
    	
    	out.write(ans);
    	out.flush();
    	out.close();
    }
    
 
	
}

class InputReader{
	
	private BufferedReader reader;
	private StringTokenizer tokenizer;
	
	public InputReader(InputStream stream){
		reader = new BufferedReader(new InputStreamReader(stream));
		tokenizer = null;
	}
	
	public String next(){
		while(tokenizer == null || !tokenizer.hasMoreTokens()){
			try{
				tokenizer = new StringTokenizer(reader.readLine());
			}catch(IOException e){
				throw new RuntimeException(e);
			}
		}
		
		return tokenizer.nextToken();
	}
	
	public String nextLine(){
		tokenizer = null;
		try{
			return reader.readLine();
		}catch(IOException e){
			throw new RuntimeException(e);
		}
		
}
	
	public int nextInt(){
		return Integer.parseInt(next());
	}
	
	public long nextLong(){
		return Long.parseLong(next());
	}
	
	public double nextDouble(){
		return Double.parseDouble(next());
	}
	
	public BigInteger nextBigInteger(){
		return new BigInteger(next());
	}
	
	public BigDecimal nextBigDecimal(){
		return new BigDecimal(next());
	}
	
	public int[] nextIntArray(int n){
		int[] rez = new int[n];
		for(int i=0; i<n; ++i)
			rez[i] = nextInt();
		
		return rez;
	
	}
}

        
class OutputWriter{
	private PrintWriter out;
	
	public OutputWriter(Writer out){
		this.out = new PrintWriter(out);
	}
	
	public OutputWriter(OutputStream out){
		this.out = new PrintWriter (new BufferedWriter(new OutputStreamWriter(out)));
	}
	
	public void write(Object ... o){
		for(Object x : o) out.print(x);
	}	
	
	public void writeln(Object ... o){
		write(o);
		out.println();
	}
	
	public void flush(){
		out.flush();
	}
	
	public void close(){
		out.close();
	}

}
        

       
        

       

