#include<bits/stdc++.h>
using namespace std;
#define FasterIO ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
typedef unsigned long long ull;
typedef long long ll;
typedef double db;
#define mem(a,x) memset(a,x,sizeof(a))
#define pb push_back
#define ff first
#define ss second
#define mk make_pair
#define pi pair<int,int>
#define vi vector<int>
#define pL pair<ll,ll>
#define vL vector<ll>
#define vp vector<pi>
#define vpL vector<pL>
const int MX=1000;
const ll inf=1e18;
const ll mod=1e9+7;
int a[MX][MX];
void construct(int n, int m)
{
for(int i=0; i<=m; i++) a[0][i]=i;
int mex=m;
for(int i=1; i<n; i++)
{
a[i][0]=a[i-1][m];
for(int j=1; j<=m; j++) a[i][j]=a[i-1][j-1];
mex--;
}
if(mex>n+1)
{
mex=n+1;
for(int i=n-1; i>=0; i--)
{
for(int j=0; j<m; j++)
{
if(a[i][j]==mex) a[i][j]=mex+1;
}
mex++;
}
}
}
int main()
{
FasterIO;
for(int i=2; i<=100; i++)
{
for(int j=2; j<=100; j++)
{
int n, m;
n=i, m=j;
vector<int>st;
if(n<=m)
{
construct(n, m);
if(n==m) a[n-1][m-1]=1;
for(int i=0; i<n; i++)
{
vector<int>v(m);
for(int j=0; j<m; j++) v[j]=a[i][j];
sort(v.begin(), v.end());
int mx=0;
for(int j=0; j<m; j++)
{
if(v[j]==mx) mx++;
else if(v[j]>mx) break;
}
st.push_back(mx);
}
for(int i=0; i<m; i++)
{
vector<int>v(n);
for(int j=0; j<n; j++) v[j]=a[j][i];
sort(v.begin(), v.end());
int mx=0;
for(int j=0; j<n; j++)
{
if(v[j]==mx) mx++;
else if(v[j]>mx) break;
}
st.push_back(mx);
}
}
else
{
construct(m, n);
for(int i=0; i<n; i++)
{
vector<int>v(m);
for(int j=0; j<m; j++) v[j]=a[j][i];
sort(v.begin(), v.end());
int mx=0;
for(int j=0; j<m; j++)
{
if(v[j]==mx) mx++;
else if(v[j]>mx) break;
}
st.push_back(mx);
}
for(int i=0; i<m; i++)
{
vector<int>v(n);
for(int j=0; j<n; j++) v[j]=a[i][j];
sort(v.begin(), v.end());
int mx=0;
for(int j=0; j<n; j++)
{
if(v[j]==mx) mx++;
else if(v[j]>mx) break;
}
st.push_back(mx);
}
}
sort(st.begin(), st.end());
int mex=0;
for(int i=0; i<st.size(); i++)
{
if(mex==st[i]) mex++;
else if(mex<st[i]) break;
}
if(n<=m)
{
if(min(n*2, m)+1!=mex) cout<<n<<' '<<m<<' '<<mex<<endl;
}
else
{
if(min(n, m*2)+1!=mex) cout<<n<<' '<<m<<' '<<mex<<endl;
}
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBGYXN0ZXJJTyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCkKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgZG91YmxlIGRiOwoKI2RlZmluZSBtZW0oYSx4KSBtZW1zZXQoYSx4LHNpemVvZihhKSkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAojZGVmaW5lIG1rIG1ha2VfcGFpcgojZGVmaW5lIHBpIHBhaXI8aW50LGludD4KI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHBMIHBhaXI8bGwsbGw+CiNkZWZpbmUgdkwgdmVjdG9yPGxsPgojZGVmaW5lIHZwIHZlY3RvcjxwaT4KI2RlZmluZSB2cEwgdmVjdG9yPHBMPgoKY29uc3QgaW50IE1YPTEwMDA7CmNvbnN0IGxsIGluZj0xZTE4Owpjb25zdCBsbCBtb2Q9MWU5Kzc7CgoKaW50IGFbTVhdW01YXTsKCnZvaWQgY29uc3RydWN0KGludCBuLCBpbnQgbSkKewogICAgZm9yKGludCBpPTA7IGk8PW07IGkrKykgYVswXVtpXT1pOwoKICAgIGludCBtZXg9bTsKICAgIGZvcihpbnQgaT0xOyBpPG47IGkrKykKICAgIHsKICAgICAgICBhW2ldWzBdPWFbaS0xXVttXTsKICAgICAgICBmb3IoaW50IGo9MTsgajw9bTsgaisrKSBhW2ldW2pdPWFbaS0xXVtqLTFdOwogICAgICAgIG1leC0tOwogICAgfQoKICAgIGlmKG1leD5uKzEpCiAgICB7CiAgICAgICAgbWV4PW4rMTsKICAgICAgICBmb3IoaW50IGk9bi0xOyBpPj0wOyBpLS0pCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDsgajxtOyBqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGFbaV1bal09PW1leCkgYVtpXVtqXT1tZXgrMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBtZXgrKzsKICAgICAgICB9CiAgICB9Cgp9CgppbnQgbWFpbigpCnsKCiAgICBGYXN0ZXJJTzsKCiAgICBmb3IoaW50IGk9MjsgaTw9MTAwOyBpKyspCiAgICB7CiAgICAgICAgZm9yKGludCBqPTI7IGo8PTEwMDsgaisrKQogICAgICAgIHsKCiAgICAgICAgICAgIGludCBuLCBtOwoKICAgICAgICAgICAgbj1pLCBtPWo7CgogICAgICAgICAgICB2ZWN0b3I8aW50PnN0OwoKICAgICAgICAgICAgaWYobjw9bSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29uc3RydWN0KG4sIG0pOwogICAgICAgICAgICAgICAgaWYobj09bSkgYVtuLTFdW20tMV09MTsKCgogICAgICAgICAgICAgICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHZlY3RvcjxpbnQ+dihtKTsKICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGo9MDsgajxtOyBqKyspIHZbal09YVtpXVtqXTsKCiAgICAgICAgICAgICAgICAgICAgc29ydCh2LmJlZ2luKCksIHYuZW5kKCkpOwoKICAgICAgICAgICAgICAgICAgICBpbnQgbXg9MDsKICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGo9MDsgajxtOyBqKyspCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZih2W2pdPT1teCkgbXgrKzsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih2W2pdPm14KSBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3QucHVzaF9iYWNrKG14KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDsgaTxtOyBpKyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmVjdG9yPGludD52KG4pOwogICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaj0wOyBqPG47IGorKykgdltqXT1hW2pdW2ldOwoKICAgICAgICAgICAgICAgICAgICBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSk7CgogICAgICAgICAgICAgICAgICAgIGludCBteD0wOwogICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaj0wOyBqPG47IGorKykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZbal09PW14KSBteCsrOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHZbal0+bXgpIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzdC5wdXNoX2JhY2sobXgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdChtLCBuKTsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8aW50PnYobSk7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTA7IGo8bTsgaisrKSB2W2pdPWFbal1baV07CgogICAgICAgICAgICAgICAgICAgIHNvcnQodi5iZWdpbigpLCB2LmVuZCgpKTsKCiAgICAgICAgICAgICAgICAgICAgaW50IG14PTA7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTA7IGo8bTsgaisrKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYodltqXT09bXgpIG14Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodltqXT5teCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBzdC5wdXNoX2JhY2sobXgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wOyBpPG07IGkrKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8aW50PnYobik7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTA7IGo8bjsgaisrKSB2W2pdPWFbaV1bal07CgogICAgICAgICAgICAgICAgICAgIHNvcnQodi5iZWdpbigpLCB2LmVuZCgpKTsKCiAgICAgICAgICAgICAgICAgICAgaW50IG14PTA7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTA7IGo8bjsgaisrKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYodltqXT09bXgpIG14Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodltqXT5teCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBzdC5wdXNoX2JhY2sobXgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc29ydChzdC5iZWdpbigpLCBzdC5lbmQoKSk7CiAgICAgICAgICAgIGludCBtZXg9MDsKCiAgICAgICAgICAgIGZvcihpbnQgaT0wOyBpPHN0LnNpemUoKTsgaSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihtZXg9PXN0W2ldKSBtZXgrKzsKICAgICAgICAgICAgICAgIGVsc2UgaWYobWV4PHN0W2ldKSBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYobjw9bSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYobWluKG4qMiwgbSkrMSE9bWV4KSBjb3V0PDxuPDwnICc8PG08PCcgJzw8bWV4PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYobWluKG4sIG0qMikrMSE9bWV4KSBjb3V0PDxuPDwnICc8PG08PCcgJzw8bWV4PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K