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
(lambda __g, __print, __y: [[[[[(lambda __after: (lambda __after: __y(lambda __this: lambda: (lambda __break: [[[(lambda __after: [[__break() for __g['minf'] in [(((10 ** (lenm - 1)) - 1))]][0] for __g['minl'] in [((10 ** (lenm - 1)))]][0] if ((w - ((nokori * lenm) * k)) <= 0) else __after())(lambda: __this()) for __g['nokori'] in [((((10 ** lenm) - 1) - ((10 ** (lenm - 1)) - 1)))]][0] for __g['lenm'] in [((lambda o, v: (lambda r: o + v if r is NotImplemented else r)(object.__getattribute__(object.__getattribute__(type(o), '__dict__').get('__iadd__', lambda self, other: NotImplemented), '__get__')(o, type(o))(v)))(__g['lenm'], 1))]][0] for __g['w'] in [((w - ((nokori * lenm) * k)))]][0])(__after) if True else __after())())(lambda: __after()) if ((w - ((nokori * lenm) * k)) > 0) else (lambda __after: (__print(nokori), [__after() for __g['flag'] in [(1)]][0])[1] if ((w - ((nokori * lenm) * k)) == 0) else [[__after() for __g['minf'] in [((m - 1))]][0] for __g['minl'] in [(m)]][0])(lambda: __after()))(lambda: [(lambda __after: __y(lambda __this: lambda: (lambda __break: (lambda __after: __break() if (flag == 1) else __after())(lambda: [[(lambda __after: (lambda __after: [__break() for __g['fix'] in [(x)]][0] if (a < (lenm * k)) else (lambda __after: [__break() for __g['fix'] in [((x + 1))]][0] if (a == (lenm * k)) else __after())(lambda: __after()))(lambda: [__after() for __g['minl'] in [(x)]][0]) if (a > 0) else (lambda __after: (lambda __after: [__break() for __g['fix'] in [((x - 1))]][0] if (a > ((-lenm) * k)) else (lambda __after: [__break() for __g['fix'] in [((x - 1))]][0] if (a == ((-lenm) * k)) else __after())(lambda: __after()))(lambda: [__after() for __g['maxl'] in [(x)]][0]) if (a < 0) else (lambda __after: [__break() for __g['fix'] in [(x)]][0] if (a == 0) else __after())(lambda: __after()))(lambda: __after()))(lambda: __this()) for __g['a'] in [((w - (((x - minf) * lenm) * k)))]][0] for __g['x'] in [(((maxl + minl) / 2))]][0]))(__after) if True else __after())())(lambda: (lambda __after: (lambda __after: (__print(((fix - m) + 1)), __after())[1] if (fix >= m) else (__print(0), __after())[1])(lambda: __after()) if (not (flag == 1)) else __after())(lambda: None)) for __g['maxl'] in [(((10 ** lenm) - 1))]][0]) for __g['nokori'] in [((((10 ** lenm) - 1) - (m - 1)))]][0] for __g['lenm'] in [(len(str(m)))]][0] for __g['flag'] in [(0)]][0] for __g['i'] in [(0)]][0] for (__g['w'], __g['m'], __g['k']) in [(map(int, raw_input().split()))]][0])(globals(), __import__('__builtin__').__dict__['print'], (lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))))