import strutils, tables var n = stdin.readLine.parseBiggestInt var table = initTable[int64, int64]() proc sum(n: int64): int64 = if n == 0: return 0 if table.hasKey(n): return table[n] result += n div 2 + sum(n div 2) result += (n - 1) div 4 * 3 + sum((n - 1) div 4) + 1 result += (n + 1) div 4 * 3 + sum((n + 1) div 4) if n >= 3: result -= 1 result = result mod 998244353 table[n] = result proc last_check() = try: let x = stdin.readLine assert x == "" except EOFError: return assert 1 <= n and n <= 1000_000_000_000_000_000 echo sum(n) last_check()