#include <iostream>
#include <iomanip>
#include <cmath>
#include <climits>
#include <algorithm>
#include <numeric>

using namespace std;

const int MOD = (int)(1e9 + 7);

void printOne(long long n) {

    for (long long i = 2;i * i <= n;i++) {

        // Xác định i là một ước nguyên tố của n
        if (n % i == 0) {
            cout << i << " ";
            // Tìm số mũ của i trong n
            int count = 0;
            while (n % i == 0) {
                count++;
                n = n / i;
            }
            
        }
    }

    // Ước nguyên tố cuối cùng trong phân tích
    if (n != 1) {
        cout << n;
    }
}

void printTwo(long long n) {

    for (long long i = 2;i * i <= n;i++) {

        // Xác định i là một ước nguyên tố của n
        if (n % i == 0) {

            // Tìm số mũ của i trong n
            int count = 0;
            while (n % i == 0) {
                count++;
                n = n / i;
            }

            cout << "(" << i << ", " << count << ") ";

        }
    }

    // Ước nguyên tố cuối cùng trong phân tích
    if (n != 1) {
        cout << "(" << n << ", " << 1 << ") ";
    }
}

void printThree(long long n) {

    for (long long i = 2;i * i <= n;i++) {

        // Xác định i là một ước nguyên tố của n
        if (n % i == 0) {

            // Tìm số mũ của i trong n
            int count = 0;
            while (n % i == 0) {
                cout << i;
                if (n != 1) {
                    cout << " x ";
                }
                count++;
                n = n / i;
            }

        }
    }

    // Ước nguyên tố cuối cùng trong phân tích
    if (n != 1) {
        cout << n;
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    long long n;cin >> n;

    printOne(n);

    cout << endl;

    printTwo(n);

    cout << endl;

    printThree(n);

    cout << endl;
    return 0;
}

