def compress(ps): ps, depth = adjust_to_pow2(ps) t = build_segtree(ps) return [calc_partial_sum(t, d) % 10 for d in range(depth + 1)] def adjust_to_pow2(ps): n = len(ps) depth = len(bin(n - 1)) - 2 adjusted_length = 1 << depth return ps + [0] * (adjusted_length - n), depth def build_segtree(ps): n = len(ps) segtree = [0] * n + ps for i in range(n - 1, 0, -1): segtree[i] = segtree[i << 1] + segtree[(i << 1) | 1] return segtree def calc_partial_sum(t, d): return sum(t[i] for i in range(1 << d, 2 << d, 2)) def detect_dif(correct, wrong): dif = correct[0] - wrong[0] idx = 0 depth = len(correct) - 1 for c, w in zip(correct[1:], wrong[1:]): depth -= 1 if c == w: idx += 1 << depth return idx, dif def solve(qs, correct): wrong = compress(qs) idx, dif = detect_dif(correct, wrong) return qs[idx], (qs[idx] + dif) % 10 if __name__ == '__main__': correct = [7, 9, 1, 9, 6, 8, 1, 5, 9, 8, 1, 4, 9, 4, 1, 1, 6, 1, 1] qi = input() qi = qi[0] + qi[2:] qs = list(map(int, qi)) print(*solve(qs, correct))