#include <bits/stdc++.h>
using namespace std;
#define ll long long
// i -> sqrt(n)
// i*i -> n
void factorization(int n)
{
for (int i = 1; i * i <= n; i++)
{
if (n % i == 0)
{
cout << i << " ";
if (i * i != n)
{
cout << n / i << " ";
}
}
}
cout << endl;
}
map<ll, int> mp;
void prime_factorization(ll n)
{
for (ll i = 2; i * i <= n; i++)
{
while (n % i == 0)
{
n /= i;
mp[i]++;
}
}
if (n != 1)
mp[n]++;
}
const int sz = 1000000 + 5;
bool is_prime[sz + 5];
void sieve()
{
for (int i = 2; i <= sz; i++)
is_prime[i] = 1;
for (int i = 2; i * i <= sz; i++)
{
if (is_prime[i])
{
for (int j = i * i; j <= sz; j += i)
{
is_prime[j] = 0;
}
}
}
}
const int N = 10000007;
int spf[N + 5];
void build_spf()
{
for (int i = 1; i < N; i++)
spf[i] = i;
for (int i = 2; i * i < N; i++)
{
if (spf[i] == i)
{
for (int j = i * i; j < N; j += i)
{
if (spf[j] == j)
{
spf[j] = i;
}
}
}
}
}
void Fact_spf(int n)
{
while (n > 1)
{
cout << spf[n] << " ";
n /= spf[n];
}
}
void PREMTU(string s)
{
sort(s.begin(), s.end());
do
{
cout << s << "\n";
} while (next_permutation(s.begin(), s.end()));
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
sieve();
build_spf();
int t = 1;
// cin >> t;
while (t--)
{
int s[4] = {1, 2, 3, 4};
sort(s, s + 4);
do
{
for (int i = 0; i < 4; i++)
{
cout << s[i] << " ";
}
cout << endl;
} while (next_permutation(s, s + 4));
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwoKLy8gaSAtPiBzcXJ0KG4pCi8vIGkqaSAtPiBuCgp2b2lkIGZhY3Rvcml6YXRpb24oaW50IG4pCnsKICAgIGZvciAoaW50IGkgPSAxOyBpICogaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgaWYgKG4gJSBpID09IDApCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8IGkgPDwgIiAiOwogICAgICAgICAgICBpZiAoaSAqIGkgIT0gbikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY291dCA8PCBuIC8gaSA8PCAiICI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7Cn0KCm1hcDxsbCwgaW50PiBtcDsKdm9pZCBwcmltZV9mYWN0b3JpemF0aW9uKGxsIG4pCnsKICAgIGZvciAobGwgaSA9IDI7IGkgKiBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICB3aGlsZSAobiAlIGkgPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIG4gLz0gaTsKICAgICAgICAgICAgbXBbaV0rKzsKICAgICAgICB9CiAgICB9CiAgICBpZiAobiAhPSAxKQogICAgICAgIG1wW25dKys7Cn0KCmNvbnN0IGludCBzeiA9IDEwMDAwMDAgKyA1Owpib29sIGlzX3ByaW1lW3N6ICsgNV07Cgp2b2lkIHNpZXZlKCkKewogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gc3o7IGkrKykKICAgICAgICBpc19wcmltZVtpXSA9IDE7CgogICAgZm9yIChpbnQgaSA9IDI7IGkgKiBpIDw9IHN6OyBpKyspCiAgICB7CiAgICAgICAgaWYgKGlzX3ByaW1lW2ldKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IGkgKiBpOyBqIDw9IHN6OyBqICs9IGkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlzX3ByaW1lW2pdID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKY29uc3QgaW50IE4gPSAxMDAwMDAwNzsKaW50IHNwZltOICsgNV07Cgp2b2lkIGJ1aWxkX3NwZigpCnsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgTjsgaSsrKQogICAgICAgIHNwZltpXSA9IGk7CgogICAgZm9yIChpbnQgaSA9IDI7IGkgKiBpIDwgTjsgaSsrKQogICAgewoKICAgICAgICBpZiAoc3BmW2ldID09IGkpCiAgICAgICAgewogICAgICAgICAgICBmb3IgKGludCBqID0gaSAqIGk7IGogPCBOOyBqICs9IGkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChzcGZbal0gPT0gaikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzcGZbal0gPSBpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cgp2b2lkIEZhY3Rfc3BmKGludCBuKQp7CiAgICB3aGlsZSAobiA+IDEpCiAgICB7CiAgICAgICAgY291dCA8PCBzcGZbbl0gPDwgIiAiOwogICAgICAgIG4gLz0gc3BmW25dOwogICAgfQp9Cgp2b2lkIFBSRU1UVShzdHJpbmcgcykKewogICAgc29ydChzLmJlZ2luKCksIHMuZW5kKCkpOwoKICAgIGRvCiAgICB7CiAgICAgICAgY291dCA8PCBzIDw8ICJcbiI7CiAgICB9IHdoaWxlIChuZXh0X3Blcm11dGF0aW9uKHMuYmVnaW4oKSwgcy5lbmQoKSkpOwp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKICAgIHNpZXZlKCk7CiAgICBidWlsZF9zcGYoKTsKICAgIGludCB0ID0gMTsKICAgIC8vIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkKICAgIHsKICAgICAgICBpbnQgc1s0XSA9IHsxLCAyLCAzLCA0fTsKICAgICAgICBzb3J0KHMsIHMgKyA0KTsKCiAgICAgICAgZG8KICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0IDw8IHNbaV0gPDwgIiAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICB9IHdoaWxlIChuZXh0X3Blcm11dGF0aW9uKHMsIHMgKyA0KSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==