import java.util.*;

public class Euler95 {
    public static void main(String[] args) {
        int limit = 1000000;
        int[] s = new int[limit + 1];
        for (int i = 1; i <= limit; i++)
            for (int j = 2 * i; j <= limit; j += i)
                s[j] += i;
        boolean[] done = new boolean[limit + 1];
        int bestLen = 0, bestMin = 0;
        for (int start = 2; start <= limit; start++) {
            if (done[start])
                continue;
            List<Integer> path = new ArrayList<>();
            Map<Integer, Integer> idx = new HashMap<>();
            int n = start;
            while (n >= 1 && n <= limit && !idx.containsKey(n) && !done[n]) {
                idx.put(n, path.size());
                path.add(n);
                n = s[n];
            }
            if (n >= 1 && n <= limit && idx.containsKey(n)) {
                int ls = idx.get(n), ll = path.size() - ls;
                int mm = path.subList(ls, path.size()).stream().min(Integer::compareTo).get();
                if (ll > bestLen || (ll == bestLen && mm < bestMin)) {
                    bestLen = ll;
                    bestMin = mm;
                }
            }
            for (int v : path)
                done[v] = true;
        }
        System.out.println(bestMin);
    }
}
