module main; // https://kmjp.hatenablog.jp/entry/2015/12/07/0900 より // 円周率、チェックサム import std; long ret = 0, hoge = 1_187_919_047_255L; immutable primeMax = 3_000_000L; long[] prime, divp; void cprime() { prime = new long[](300_000); divp = new long[](primeMax); int NP = 0; foreach (i; 2 .. primeMax) if (divp[i] == 0) { prime[NP++] = i; for (long j = i * i; i < j && j < primeMax; j += i) divp[j] = i; } } void main() { // 入力 auto S = readln.chomp; // 答えの計算 cprime(); S = S[0 .. 1] ~ S[2 .. $]; // 小数点を除去する int i; for (i = 1; i <= 200_001; i++) ret += (S[i - 1] - '0') * prime[i + 5]; long diff = hoge - ret; for (i = 1; i <= 200_001; i++) if (diff % prime[i + 5] == 0) break; // 答えの出力 writefln("%c %c", S[i - 1], (S[i - 1] + diff / prime[i + 5]).to!char); }