// https://cses.fi/345/task/A
#include <bits/stdc++.h>
#define N 100010
using namespace std;
vector<int> g[N];
int flag = 0;
// optional
bool isNotPrime(int num, int &res) {
int sqr = sqrt(num);
for (int i=2; i<=sqr; i++) {
if (num % i == 0) {
res = i;
return true;
}
}
return false;
}
void dfs(int num, int depth, int length) {
if (flag) return;
if (depth == 5) return;
int r;
for (int j=1; j<10; j++) {
int m = pow(10, length) + num;
if (isNotPrime(m, r) && !flag) {
flag = 1;
cout << m << endl;
cout << r << " " << m/r;
return;
}
dfs(m, depth+1, length+1);
}
}
int main() {
int n;
cin >> n;
int length = 0;
int n_cp = n;
while (n_cp) {
n_cp/=10;
length++;
}
int r = 0;
if (isNotPrime(n, r)) {
cout << n << endl;
cout << r << " " << n/r;
return 0;
}
dfs(n, 0, length);
}