import java.math.BigInteger;

public class Euler303 {

    static String smallestMultipleWithDigitsLeq2(int n) {
        if (n == 1)
            return "1";

        int[] parent = new int[n];
        int[] parentDigit = new int[n];
        boolean[] seen = new boolean[n];
        int[] q = new int[n];
        int head = 0, tail = 0;

        for (int firstDigit = 1; firstDigit <= 2; firstDigit++) {
            int rem = firstDigit % n;
            if (seen[rem])
                continue;
            seen[rem] = true;
            parent[rem] = -2;
            parentDigit[rem] = firstDigit;
            q[tail++] = rem;
        }

        int endRem = -1;
        while (head < tail) {
            int rem = q[head++];
            if (rem == 0) {
                endRem = rem;
                break;
            }

            int r10 = (rem * 10) % n;
            for (int digit = 0; digit <= 2; digit++) {
                int next = r10 + digit;
                if (next >= n)
                    next -= n;
                if (!seen[next]) {
                    seen[next] = true;
                    parent[next] = rem;
                    parentDigit[next] = digit;
                    q[tail++] = next;
                }
            }
        }

        StringBuilder sb = new StringBuilder();
        int cur = endRem;
        while (cur >= 0) {
            sb.append((char) ('0' + parentDigit[cur]));
            cur = parent[cur];
        }
        return sb.reverse().toString();
    }

    static BigInteger solve(int limit) {
        BigInteger total = BigInteger.ZERO;
        for (int n = 1; n <= limit; n++) {
            String multiple = smallestMultipleWithDigitsLeq2(n);
            BigInteger val = new BigInteger(multiple);
            total = total.add(val.divide(BigInteger.valueOf(n)));
        }
        return total;
    }

    public static void main(String[] args) {
        System.out.println(solve(10000));
    }
}
