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

/*
 * @author Mahmoud Aladdin <aladdin3>
 *
 */
 
public class Main {
    public static void main (String[] args) throws java.lang.Exception {
		InputReader scan = new InputReader(System.in);
		PrintWriter writer = new PrintWriter(System.out, true);
		(new Main(scan, writer)).run();
		writer.close();
    }
    
    private InputReader jin;
    private PrintWriter jout;
    
    public Main(InputReader in, PrintWriter out) {
    	this.jin  = in;
    	this.jout = out;
    }
    
    public int count(BigInteger n) {
    	if(n.compareTo(BigInteger.ZERO) == 0) return 1;
    	int ans = 0;
    	while(n.compareTo(BigInteger.ZERO) > 0) {
    		ans++;
    		n = n.divide(BigInteger.TEN);
    	}
    	return ans;
    }
    
    public void run() throws Exception {
		BigInteger w = new BigInteger(jin.token());
		BigInteger m = new BigInteger(jin.token());
		BigInteger k = new BigInteger(jin.token());
		
		BigInteger len = BigInteger.ZERO;
		while(w.compareTo(BigInteger.ZERO) > 0) {
			int ml = count(m);
			BigInteger next = BigInteger.TEN.pow(ml);
			BigInteger val = next.subtract(m).multiply(k).multiply(BigInteger.valueOf(ml));
			//jout.println(val + " " + w + " " + len);
			if(val.compareTo(w) <= 0) {
				w = w.subtract(val);
				len = len.add(next.subtract(m));
				m = next;
			} else {
				//jout.println(k.multiply(BigInteger.valueOf(ml)));
				//jout.println(w.divide(k.multiply(BigInteger.valueOf(ml))));
				len = len.add(w.divide(k.multiply(BigInteger.valueOf(ml))));
				break;
			}
		}	
		jout.println(len);
    }
}

 
class InputReader {
    private static final int bufferMaxLength = 1024;
    private InputStream in;
    private byte[] buffer;
    private int currentBufferSize;
    private int currentBufferTop;
    private static final String tokenizers = " \t\r\f\n";
    
    public InputReader(InputStream stream) {
        this.in = stream;
        buffer = new byte[bufferMaxLength];
        currentBufferSize = 0;
        currentBufferTop = 0;
    }
    
    private boolean refill() throws IOException {
        this.currentBufferSize = this.in.read(this.buffer);
        this.currentBufferTop = 0;
        return this.currentBufferSize > 0;
    }
    
    
    private Byte readChar() throws IOException {
        if(currentBufferTop < currentBufferSize) {
            return this.buffer[this.currentBufferTop++];
        } else {
            if(!this.refill()) {
                return null;
            } else {
                return readChar();
            }
        }
    }
    
    
    public String token() throws IOException {
        StringBuffer tok = new StringBuffer();
        Byte first;
        while((first = readChar()) != null && (tokenizers.indexOf((char) first.byteValue()) != -1));
        if(first == null) return null;
        tok.append((char)first.byteValue());
        while((first = readChar()) != null && (tokenizers.indexOf((char) first.byteValue()) == -1)) {
            tok.append((char)first.byteValue());
        }
        return tok.toString();
    }
    
    public String line() throws IOException {
		Byte first;
		StringBuffer line = new StringBuffer();
		while ((first = readChar()) != null && (char)first.byteValue() != '\n') {
			line.append((char)first.byteValue());
		}
		return (first == null && line.length() == 0)? null : line.toString();
    }
    
    public Integer integer() throws NumberFormatException, IOException {
        String tok = token();
        return tok == null? null : Integer.parseInt(tok);
    }
    
}
