#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
getline(cin, s);
// =====================
// BƯỚC 1: TÁCH SỐ
// =====================
stringstream ss(s);
string word;
vector<long long> a;
while (ss >> word) {
string num = "";
for (char c : word)
if (isdigit(c))
num += c;
if (!num.empty())
a.push_back(stoll(num));
}
// In dòng 1
for (long long x : a)
cout << x << " ";
cout << "\n";
int n = a.size();
if (n == 0) {
cout << "0 0";
return 0;
}
// =====================
// BƯỚC 2: DP
// =====================
int bestLen = 1;
int bestD = 0;
// thử d từ 0 → 10
for (int d = 0; d <= 10; d++) {
unordered_map<long long, int> mp;
int curMax = 1;
// duyệt từ phải sang trái
for (int i = n - 1; i >= 0; i--) {
long long val = a[i] + d;
int len = 1;
if (mp.count(val))
len = mp[val] + 1;
// cập nhật tại giá trị a[i]
if (!mp.count(a[i]))
mp[a[i]] = len;
else
mp[a[i]] = max(mp[a[i]], len);
curMax = max(curMax, len);
}
if (curMax > bestLen ||
(curMax == bestLen && d < bestD)) {
bestLen = curMax;
bestD = d;
}
}
cout << bestLen << " " << bestD;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgc3RyaW5nIHM7CiAgICBnZXRsaW5lKGNpbiwgcyk7CgogICAgLy8gPT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBCxq/hu5pDIDE6IFTDgUNIIFPhu5AKICAgIC8vID09PT09PT09PT09PT09PT09PT09PQogICAgc3RyaW5nc3RyZWFtIHNzKHMpOwogICAgc3RyaW5nIHdvcmQ7CiAgICB2ZWN0b3I8bG9uZyBsb25nPiBhOwoKICAgIHdoaWxlIChzcyA+PiB3b3JkKSB7CiAgICAgICAgc3RyaW5nIG51bSA9ICIiOwogICAgICAgIGZvciAoY2hhciBjIDogd29yZCkKICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpCiAgICAgICAgICAgICAgICBudW0gKz0gYzsKCiAgICAgICAgaWYgKCFudW0uZW1wdHkoKSkKICAgICAgICAgICAgYS5wdXNoX2JhY2soc3RvbGwobnVtKSk7CiAgICB9CgogICAgLy8gSW4gZMOybmcgMQogICAgZm9yIChsb25nIGxvbmcgeCA6IGEpCiAgICAgICAgY291dCA8PCB4IDw8ICIgIjsKICAgIGNvdXQgPDwgIlxuIjsKCiAgICBpbnQgbiA9IGEuc2l6ZSgpOwogICAgaWYgKG4gPT0gMCkgewogICAgICAgIGNvdXQgPDwgIjAgMCI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8gPT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBCxq/hu5pDIDI6IERQCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT0KCiAgICBpbnQgYmVzdExlbiA9IDE7CiAgICBpbnQgYmVzdEQgPSAwOwoKICAgIC8vIHRo4butIGQgdOG7qyAwIOKGkiAxMAogICAgZm9yIChpbnQgZCA9IDA7IGQgPD0gMTA7IGQrKykgewoKICAgICAgICB1bm9yZGVyZWRfbWFwPGxvbmcgbG9uZywgaW50PiBtcDsKICAgICAgICBpbnQgY3VyTWF4ID0gMTsKCiAgICAgICAgLy8gZHV54buHdCB04burIHBo4bqjaSBzYW5nIHRyw6FpCiAgICAgICAgZm9yIChpbnQgaSA9IG4gLSAxOyBpID49IDA7IGktLSkgewoKICAgICAgICAgICAgbG9uZyBsb25nIHZhbCA9IGFbaV0gKyBkOwoKICAgICAgICAgICAgaW50IGxlbiA9IDE7CiAgICAgICAgICAgIGlmIChtcC5jb3VudCh2YWwpKQogICAgICAgICAgICAgICAgbGVuID0gbXBbdmFsXSArIDE7CgogICAgICAgICAgICAvLyBj4bqtcCBuaOG6rXQgdOG6oWkgZ2nDoSB0cuG7iyBhW2ldCiAgICAgICAgICAgIGlmICghbXAuY291bnQoYVtpXSkpCiAgICAgICAgICAgICAgICBtcFthW2ldXSA9IGxlbjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbXBbYVtpXV0gPSBtYXgobXBbYVtpXV0sIGxlbik7CgogICAgICAgICAgICBjdXJNYXggPSBtYXgoY3VyTWF4LCBsZW4pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGN1ck1heCA+IGJlc3RMZW4gfHwgCiAgICAgICAgICAgKGN1ck1heCA9PSBiZXN0TGVuICYmIGQgPCBiZXN0RCkpIHsKICAgICAgICAgICAgYmVzdExlbiA9IGN1ck1heDsKICAgICAgICAgICAgYmVzdEQgPSBkOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGJlc3RMZW4gPDwgIiAiIDw8IGJlc3REOwoKICAgIHJldHVybiAwOwp9