Attention: we lost all the test cases for this problem, so instead of solving the problem, we need you to generate test cases. We're going to give you the answer, and you need to print a test case that produces the given answer. The original problem is in the following paragraph.People don't use cash as often as they used to. Having a credit card solves some of the hassles of cash, such as having to receive change when you can't form the exact amount of money needed to purchase an item. Typically cashiers will give you as few coins as possible in change, but they don't have to. For example, if your change is 30 cents, a cashier could give you a 5 cent piece and a 25 cent piece, or they could give you three 10 cent pieces, or ten 1 cent pieces, two 5 cent pieces, and one 10 cent piece. Altogether there are 18 different ways to make 30 cents using only 1 cent pieces, 5 cent pieces, 10 cent pieces, and 25 cent pieces. Two ways are considered different if they contain a different number of at least one type of coin. Given the denominations of the coins and an amount of change to be made, how many different ways are there to make change?As we mentioned before, we lost all the test cases for this problem, so we're actually going to give you the number of ways, and want you to produce a test case for which the number of ways is the given number. There could be many ways to achieve this (we guarantee there's always at least one), so you can print any, as long as it meets the constraints described below.

Input will consist of a single integer A (1 ≤ A ≤ 105), the desired number of ways.

In the first line print integers N and M (1 ≤ N ≤ 106, 1 ≤ M ≤ 10), the amount of change to be made, and the number of denominations, respectively. Then print M integers D1, D2, ..., DM (1 ≤ Di ≤ 106), the denominations of the coins. All denominations must be distinct: for any i ≠ j we must have Di ≠ Dj. If there are multiple tests, print any of them. You can print denominations in atbitrary order.

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    cout << (n - 1) * 2 + 1 << " 2"<< endl;
    cout << "1 2" << endl;     /// way 1 + (17 * 2)
    return 0;
}

#include <bits/stdc++.h>

using namespace std;
int main()
{
	int x;
	cin>>x;
	vector<int>number(1000001,1);
	// number[2]=2;
	if(number[1]==x){
		cout<<1<<" "<<1<<endl;
		cout<<1<<endl;

	}
	for(int i=2;i<1000001;i++)
	{

		number[i]+=number[i-2];
		if(number[i]==x){
			cout<<i<<" "<<2<<endl;
			cout<<1<<" "<<2<<endl;
			break;
		}
	}

}

#include<bits/stdc++.h>
using namespace std;
#define ll long long

int main()
{
	ll x,fact=0;
	cin>>x;
	if(x==1)
	{
		cout<<1<<" "<<1<<endl;
		cout<<1;
		return 0;
	}
	for(ll i=1;i<=x;i++)
	fact*=(i-1)*1+i;

																								fact=x;
	cout<<(fact-1)*2<<" "<<2<<endl;
	cout<<1<<" "<<2;
	return 0;
}

#include <bits/stdc++.h>

using namespace std;
#define pb push_back
#define mp make_pair
#define INF 0x3F3F3F3F
#define LINF 0x3F3F3F3F3F3F3F3FLL
const int N = (int) 1e3 + 10;
const int mod = (int) 1e9 + 7;

typedef long long ll;

int x;
int main(){
  ios_base::sync_with_stdio(0); cin.tie(0);

  cin >> x;
  if(x == 1){
    cout << "1 1" << endl;
    cout << 1 << endl;
  } else {
    ll res = x * 2l - 2l;
    cout << res << " 2" << endl;
    cout << "1 2" << endl;
  }

  return 0;
}

#include "bits/stdc++.h"
using namespace std;

const int MAXN = 1e6 + 10;

int dp[MAXN], A;

int ans = -1;
vector <int> coins;

void solve() {
  coins.push_back(1);
  coins.push_back(2);

  dp[0] = 1;
  for(int i = 0; i < coins.size(); ++i) {
    for(int j = coins[i]; j < MAXN; ++j)
      dp[j] += dp[j - coins[i]];
  }

  for(int i = 1; i < MAXN; ++i)
    if(dp[i] == A) {
      ans = i;
      return;
    }
}

int main() {
  scanf("%d", &A);

  solve();

  printf("%d %d\n", ans, coins.size());

  for(int i = 0; i < coins.size(); ++i)
    printf("%d ", coins[i]);

  return 0;
}

#include <bits/stdc++.h>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
#include <functional>
using namespace std;
using namespace __gnu_pbds;

#define ll long long
#define mk make_pair

template <class key, class cmp = std::less<key>>
using ordered_set = tree<key, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
const ll mod = 1e9 + 7;

void solve()
{
    ll n;
    cin>>n;
    cout<<2*n-1<<" "<<"2"<<endl;
    cout<<"1 2"<<endl;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    // ll t;
    // cin >> t;

    // while (t--)
    // {
    //     solve();
    // }
    solve();
    return 0;
}

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <iomanip>
#include <limits.h>
#include <algorithm>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <utility>
#include <unordered_map>
#include <unordered_set>
#include <functional>
#include <numeric>
#include <fstream>
#include <ctime>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    int ways;
    cin >> ways;

    if (ways == 1) {
        cout << "1 1\n1";
    } else {
        cout << 2 * (ways - 1) << " 2\n1 2";
    }

    return 0;
}

#include <iostream>
#include <iomanip>
#include <fstream>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>

using namespace std;
typedef long long ll;

int main()
{
    ios_base::sync_with_stdio(0);

    int A; cin >> A;
    cout << 2 * A - 1 << " " << 2 << "\n";
    cout << "1 2\n";
    return 0;
}

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>

using namespace std;
long long i,j,k,l,t,m,n,a[234545],b[454567],d,x,y,z, s,c[22222];
string p,q[456],r;
int main() {
    cin >>n;
    if (n == 1){
        cout <<1<<' '<<1<<endl<<1;
        return 0;
    }
    cout << (n-1) * 2<<' '<<2<<endl;
    cout << 1<<' '<<2;
    return 0;
}

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f

#define PI acos(-1)
#define fi first
#define se second
#define lowbit(x) (x&(-x))
#define mp make_pair
#define pb push_back
#define si sizee()
#define E exp(1.0)
#define fixed cout.setf(ios::fixed)
#define fixeds(x) setprecision(x)
#define IOS ios::sync_with_stdio(false);cin.tie(0)
 using namespace std;
inline ll read(){
    char c=getchar();
    ll f=1,x=0;
    while(c<'0'||c>'9'){
        if(c=='-')
            f=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9'){
        x=(x<<1)+(x<<3)+(c^'0');
        c=getchar();
    }
    return x*f;
}
ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}//最大公因数
/*最小公倍数lcm(a,b)=a*b/gcd(a,b);
gcd(ka,kb)=k*gcd(a,b);
gcd(s/a,s/b)=s/gcd(a,b);
gcd(x^a-1,x^b-1)=x^gcd(a,b)-1;
gcd(f[a],f[b])=f[gcd(a,b)];
lcm(ka,kb)=k*lcm(a,b);
lcm(f[a],f[b])=f[lcm(a.b)];*/

int main(){
 ll a=read();
 ll n=a*2-1;
 ll p=2;

 if(a==1){
    printf("1 1\n");
   printf("1");
   return 0;
 }
 printf("%lld %lld\n",n,p);
 printf("1 2");

   return 0;

}

#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<sstream>

using namespace std;

#define open  freopen("input.txt","r",stdin)
#define close  freopen ("output.txt","w",stdout)
#define db double
#define ll long long
#define lll unsigned long long
#define loop(i,a,n) for(int i=a;i<=n;i++)
#define sf scanf
#define sf1(a) sf("%d",&a)
#define sf2(a,b) sf("%d %d",&a,&b)
#define sf3(a,b,c) sf("%d %d %d",&a,&b,&c)
#define sf4(a,b,c,d) sf("%d %d %d %d",&a,&b,&c,&d)
#define sfd(a) sf("%lf",&a)
#define sfd2(a,b) sf("%lf %lf",&a,&b)
#define sfl1(a) sf("%lld",&a)
#define sfl2(a,b) sf("%lld %lld",&a,&b)
#define sfl3(a,b,c) sf("%lld %lld %lld",&a,&b,&c)
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pf printf
#define pfi(x) pf("%d",x)
#define pfl(x) pf("%lld",x)
#define NL puts("")
#define bug(x) cerr<<"Check it "<<x<<endl
#define pft(tc) printf("Case %d:",tc++)
#define pft2(tc) printf("Case #%d:",tc++)
#define PI (2.0*acos(0.0))
//#define PI acos(-1.0)
#define mem(a,v) memset(a,v,sizeof a)
#define endl '\n'
#define pb push_back
#define xx first
#define yy second
#define mp make_pair
#define all(a) a.begin(),a.end()
#define HASH1 (lll) 101949101
#define HASH2 (lll) 104282401
#define HASH3 (lll) 701393107
#define LEN(a) a.length()

template <class T> inline T bigmod(T p,T e,T M)
{
    ll ret = 1;
    for(; e > 0; e >>= 1)
    {
        if(e & 1) ret = (ret * p) % M;
        p = (p * p) % M;
    }
    return (T)ret;
}
template <class T> inline T gcd(T a,T b)
{
    if(b==0)return a;
    return gcd(b,a%b);
}
template <class T> inline T lcm(T a,T b)
{
    return (a/gcd(a,b))*b;
}
template <class T> inline T modinverse(T a,T M)
{
    return bigmod(a,M-2,M);
}   // M is prime}
template <class T> inline T bpow(T p,T e)
{
    ll ret = 1;
    for(; e > 0; e >>= 1)
    {
        if(e & 1) ret = (ret * p);
        p = (p * p);
    }
    return (T)ret;
}

//int dx[]={1,1,0,-1,-1,-1,0,1};int dy[]={0,1,1,1,0,-1,-1,-1};//8 direction
//int dx[]={2,1,-1,-2,-2,-1,1,2};int dy[]={1,2,2,1,-1,-2,-2,-1};//Knight Direction
//int dx[]={0,1,0,-1};int dy[]={1,0,-1,0}; //4 Direction

#define eps 1e-6
#define ub upper_bound // return the right most index of x<val
#define lb lower_bound // return the right most index of x<=val
#define linf 3000000000000000000ll
#define inf 999999999
#define MX 1000000
#define mod (ll) 1000000007

struct data
{

    data() {}

    bool friend operator<(data a,data b)
    {
        // return  a.one> b.one;// sort decreasingly but increasingly for priority_queue
    }
};

int n,m,k;
ll N,M,K;

int coin[]={1,2};
int way[1000005];
int ans[100005];
int main()
{

	way[0]=1;
	for(int j=0;j<2;j++){
		for(int i=1;i<=1000000;i++){
			if(coin[j]<=i){
				way[i]+=way[i-coin[j]];
			}
		}

	}
	mem(ans,-1);
	for(int i=1;i<=1000000;i++){
		int x=way[i];
		if(x>100000) continue;
		if(ans[x]==-1) ans[x]=i;
	}
	int ct=0;
	//~ for(int i=1;i<=100000;i++){
		//~ if(ans[i]==-1) bug(i);
	//~ }
	sf1(n);
	//~ pf("%d %d\n",ans[n],way[ans[n]]);
	pf("%d %d\n",ans[n],2);
	pf("1 2\n");

    int t,tc=1;

	return 0;
}

/*

*/

#include<bits/stdc++.h>
#define ll  long long

using namespace std;

int main()
{
    ll num,i,j,now,tmp;

    cin>>num;

    if(num==1)
    {
        cout<<1<<" 1"<<endl;
        cout<<1<<endl;
        return 0;
    }

    tmp = 0;
    for(i=2;i<=1000000;i++)
    {
        ll a= i ;
        ll b = 1 + a/2LL;
        if(b==num)
        {
            cout<<i<<" 2"<<endl;
            cout<<1<<" "<<2<<endl;
            return 0;
            tmp = 1;
        }

    }

}

// ConsoleApplication5.cpp: определяет точку входа для консольного приложения.
//

//#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
	int A;
	cin >> A;
	int N, M = 2;
	int D1 = 1, D2 = 2;
	if (A == 1)
	{
		M = 1;
		N = 2;
		cout << N << " " << M << endl;
		cout << D1;
		//system("pause");
		return 0;

	}
	N = 2 * A - 2;
	cout << N << " " << M << endl;
	cout << D1 << " " << D2;
	//system("pause");
    return 0;
}

/*
    author : i6ra
    copying kills
*/
#include <bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i=l;i<r;i++)
#define drep(i,l,r) for(int i=l;i>=r;i--)
#define max(a,b) ((a>b)?a:b)
#define min(a,b) ((a>b)?b:a)
#define sz(a) (int)a.size()
#define ull unsigned long long
#define ll long long
#define mp(a,b) make_pair(a,b)
#define f first
#define s second
#define vint vector<int>
#define vll vector<ll>
#define vull vector<ull>
#define vs vector<string>
#define vbool vector<bool>

int main(){
    ll n,i;
    cin >> n;
    cout << 2*n-1 << ' ' << 2 << endl << 1 << ' ' << 2;
    return 0;
}

#include<bits/stdc++.h>

using namespace std;
#define ll long long
#define sz(x) (ll)(x.size())
#define f first
#define se second
int main() {
    ios::sync_with_stdio(0);
    ll n;
    cin>>n;
    if(n==1){
        cout<<"1 2\n1 2";
    }else{
        cout<<2*n-2<<" 2\n1 2";
    }
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    cout<<5*n-3<<" "<<2<<endl;
    cout<<"1 5"<<endl;
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    scanf("%d", &n);
    if (n == 1) return puts("1 2\n1 2");
    printf("%d 2\n1 2\n", 2 * (n - 1));
    return 0;
}

#include<iostream>
using namespace std;
int n;
int main() {
	cin >> n;
	if(n>1)printf("%d 2\n1 2", 2*n - 2);
	else printf("1 1\n1");
}

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#define fi first
#define se second
#define pb push_back
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define rep(i,a,b) for (int i=a; i<=b; i++)
#define per(i,a,b) for (int i=a; i>=b; i--)
#define L(i,u) for (int i=head[u]; i!=0; i=edge[i].nxt)
#define abs(a) ((a)>0 ? (a) : -(a))
#define INF 0x3f3f3f3f
using namespace std;
typedef pair<int,int> Pii;
typedef vector<int> Vi;
typedef long long ll;
typedef long double ld;

inline void LOCAL() {freopen("1.in","r",stdin);}
inline void read(int &x) {
	x=0; char c=getchar(); int f=1;
	while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();}
	while (c>='0'&&c<='9') {x=10*x+c-'0'; c=getchar();} x*=f;
}

int main() {
	int A; read(A);
	printf("%d 2\n",A*2-1);
	printf("1 2");
	return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main(){
  int N;cin>>N;
  if(N<2){
    N=1;
  }else {
    N--;
    N<<=1;
  }
  printf("%d %d\n",N,2);
  printf("%d %d\n",1,2);
}

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n; cin >> n;
	if(n == 1){
		cout << "1 1\n1\n";
	}else{
		n--;
		cout << 2 * n << " 2" << "\n";
		cout << "1 2\n";
	}
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main(){
	int A;
	cin >> A;
	if(A==1){
		cout << "1 1\n 1";
		return 0;
	}
	cout << 2 * (A - 1) << " " << "2\n1 2";
 }

#include<bits/stdc++.h>
using namespace std;

#define pb push_back
#define ll long long
#define maxn 200005
#define fr(i,j,k) for(int i=j;i<k;i++)
#define f(n) fr(i,0,n)
#define f1(n) fr(i,1,n+1)
#define ms(i) memset(i,0,sizeof(i));
#define ms1(i) memset(i,-1,sizeof(i));
#define F first
#define S second
const int mod = 998244353;
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int n;
	cin >> n;
	cout<<n*2-1<<' '<<2<<endl;
	cout<<1<<' '<<2<<endl;
}

#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <string>
#include <algorithm>
#include <climits>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <ctime>
#include <cstdlib>
#include <iterator>
using namespace std;

//#define TEST
int main()
{
#ifdef TEST
	freopen("data.in", "r", stdin);
	freopen("data.out", "w", stdout);
#endif
	//ios::sync_with_stdio(false);
	int n;
	while(~scanf("%d", &n)) {
		if(n == 1) {
			puts("1 1\n1");
		}
		else {
			printf("%d %d\n1 2\n", (n - 1) * 2, 2);
		}
	}

	return 0;
}

#pragma region Template

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#pragma comment(linker, "/STACK:67108864")
#endif

#include <algorithm>
#include <bitset>
#include <cassert>
#include <cinttypes>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <valarray>
#include <vector>

using namespace std;

#define all(x) (x).begin(), (x).end()
#define mp make_pair
#define pb push_back
#define sz(x) (int)(x).size()
#define fst first
#define snd second

#ifdef DEBUG
#define eprintf(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)
#define eputs(s) eprintf("%s\n", (s))
#else
#define eprintf(...) ((void)0)
#define eputs(s) ((void)0)
#endif

mt19937 gen(random_device{}());

typedef long long ll;
typedef long double ld;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef complex<double> cd;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int INF = (int)1.01e9;
const int MOD = 1000000007;
const double EPS = 1e-9;
const double PI = acos(-1);

#pragma endregion

// #define FNAME ""

bool solve()
{
    int a;
    if (scanf("%d", &a) < 1)
        return false;

    if (a == 1) {
        puts("1 1\n1");
        return true;
    }

    printf("%d 2\n1 2\n", 2 * (a - 1));

    return true;
}

int main()
{
#ifdef FNAME
    assert(freopen(FNAME ".in", "r", stdin));
    freopen(FNAME ".out", "w", stdout);
#endif

    while (solve()) {
        eprintf("Time: %.3f\n", (double)clock() / CLOCKS_PER_SEC);
    }

    return 0;
}

#include<bits/stdc++.h>
#define loop(i,a,b) for(int i=a;i<b;i++)
#define loopb(i,a,b) for(int i=a;i>=b;i--)
#define loopm(i,a,b,step) for(int i=a;i<b;i+=step)
#define loopbm(i,a,b,step) for(int i=a;i>=b;i-=step)
#define pb(a) push_back(a)
#define mp(a,b) make_pair(a,b)
#define init(arr,val) memset(arr,val,sizeof(arr))
#define INF 1000000007
#define MOD 1000000007
#define BINF 1000000000000000001
#define int long long int
#define double long double

using namespace std;

#undef int
int main()
{
#define int long long int
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int a;
    cin>>a;
    if(a>1){
    int x=2*(a-1);
    cout<<x<<" "<<2<<endl;
    cout<<1<<" "<<2;}
    else{
    cout<<1<<" "<<1<<endl;
    cout<<1;

    }

    return 0;
}

#include<stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    if(x==1)
    {
        printf("1 1\n");
        printf("1");
    }
    else{
    int n;
    n=(x-1)*2;
    printf("%d 2\n",n);
    printf("1 2\n");}
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mp make_pair
#define pb push_back

int main(){
     int n;
     cin >> n;
     if(n==1){
          cout<<1<<" "<<1<<'\n'<<1;return 0;
     }
     cout<<2*(n-1)<<" "<<2<<'\n';
     cout<<1<<" "<<2;
     return 0;
}

#include <bits/stdc++.h>
#define mem( a , b ) memset( a , b , sizeof(a) )
using namespace std;
int _I(){ int x ; scanf("%d",&x); return x; }
struct node
{
        int a , b;
        node(){};
        node( int x , int y )
        {
                a = x;
                b = y;
        }
};
int ar[ 100001 ];
int _find( int n )
{
        if( ar[ n ] == n ) return n;
        return ar[ n ] = _find( ar[ n ] );
}
void makefriend( int a , int b )
{
        int p = _find( a );
        int q = _find( b );
        if( p != q )
        {
                ar[ p ] = q;
        }
}
void solve()
{
        int n = _I();
        if( n == 1 )
        {
                printf("1 1\n1");
                return;
        }
        printf("%d 2\n1 2\n",2*(n-1) );
}
int main()
{
        //freopen("input.txt","r",stdin);
        //freopen("output.txt","w",stdout);
        //int t = _I();
        //calender();
        //while( t-- ){
                solve();
        //}
	return 0;
}

#include <iostream>
#include <vector>
#include <deque>
#include <map>
#include <set>
#include <iomanip>
#include <cmath>
#include <algorithm>

using namespace std;

typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef pair<ll,ll> ii;
typedef vector<ii> vii;
typedef vector<vii> vvii;

int main(){
    /*ll n; cin >> n;
    vector<char> ar(n);
    for(ll i = 0; i < n; i++) cin >> ar[i];

    ll SF = 0, FS = 0;
    char current = ar[0];
    for(ll i = 1; i < n; i++){
        if (current == ar[i]) continue;
        else{
            if (current == 'S') SF++;
            else FS++;
            current = ar[i];
        }
    }

    if (SF > FS) cout << "YES" << endl;
    else cout << "NO" << endl;*/

    ll q; cin >> q;
    for(ll i = 1; i <= 1e6; i++){
        ll c = i;
        if (c/2 + 1 == q){
            cout << c << " " << 2 << endl;
            cout << 1 << " " << 2 << endl;
            break;
        }

    }

}

// http://codeforces.com/contest/867/problem/B
#include<bits/stdc++.h>
using namespace std;

int main(){
  ios_base::sync_with_stdio(0),cin.tie(NULL);
  int v;
  cin >> v;
  cout << 2 * v - 1<< " 2"<< endl;
  cout << 1 << " " << 2 << endl;
  return 0;
}

/*Aman Singh's competitive coding template
  aman_singh[at]students[dot]iitmandi[dot]ac[dot]in  */

#include <bits/stdc++.h>
using namespace std;

#define rep(i, a, b) for(int i=(a); i<(b); i++)
#define pb push_back
#define mk make_pair
#define debug(x) cout<<__LINE__<<": "<<#x<<" = "<<x<<endl;
#define all(c) (c).begin(), (c).end()
#define F first
#define S second
#define UNIQUE(c) sort(all(c)); (c).resize(unique(all(c))-c.begin());

typedef long long ll;
typedef pair<int, int> ii;
const int INF = 0x3f3f3f3f;
const double EPS = 1e-9;

inline int cmp( double x, double y = 0, double tol = EPS)
{
	return ( (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1);
}

ll coins[5] = {1,5,10,25,50}; ll M = 5;
ll ways[1000010];
ll MAX = 1000000;
ll Q;

void solve(){
	for (int i = 0; i <= MAX; i++) ways[i] = 0;
	ways[0] = 1;

	for (int i = 0; i < M; i++){
		int c = coins[i];
		for (int j = c; j <= MAX; j++){
			if (ways[j-c] != 0){
				ways[j] += ways[j-c];

				if (ways[j] == Q){
					cout << j << " " << i + 1 << "\n";
					rep(k,0,i+1) cout << coins[k] << " "; cout << "\n";
					return;
				}
			}
		}
	}
}

int main(){
/*
	Q = -1;
	solve();
	rep(i,1,100001) if (ways[i] == 0) cout << i << "\n";
*/

	while (cin >> Q){
		solve();
	}
	return 0;
}

#include <bits/stdc++.h>
#define MOD 1000000007
#define ll long long
using namespace std;

void print(vector<int>v)
{
    vector<int>::iterator it = v.begin() ;
    while(it!=v.end())
    {
        cout<<*it<<" " ;
        it++ ;
    }
    cout<<endl ;
}

int main()
{
    int n ;
    cin>>n ;
    if(n==1)
    {
        cout<<1<<" "<<2<<endl<<1<<" "<<2<<endl ;
    }
    else
    {
        int ans = 2*(n-1)  ;
        cout<<ans<<" "<<2<<endl<<1<<" "<<2<<endl ;
    }
}

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a;
    cin >> a;
    if (a == 1) {
        cout << "1 1" << endl;
        cout << 1;
        return 0;
    }
    cout << 2*a - 2 << ' ' << 2 << endl;
    cout << "1 2";
}

#include <algorithm>
#include <cassert>
#include <cstring>
#include <iostream>

using namespace std;

#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define REP(i, n) FOR(i, 0, n)
#define TRACE(x) cout << #x << " = " << x << endl
#define _ << " _ " <<

typedef long long llint;

int main(void) {
  int A;
  scanf("%d", &A);

  printf("%d 2\n1 2\n", 2*A-1);
  return 0;
}

#include <iostream>
using namespace std;
int main()
{
    int a; cin>>a;
    cout<<2*a-1<<" 2"<<endl;
    cout<<"1 2"<<endl;
}

#include<bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    scanf("%d", &n);
    printf("%d %d\n1 2\n",max(1,2*n-2),2);
    return 0;
}

//#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
//#pragma comment(linker, "/STACK:16777216")

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;
using matrix = vector<vector<long long>>;

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<ld, ld> pld;

template<typename T>
using kawaii_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

#define all(x) (x).begin(), (x).end()
//#define int ll

void FAST_IO() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    //cout.setf(ios::fixed);
    //cout.precision(20);
    #ifdef _offline
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif // _offline
}

signed main() {
    FAST_IO();
    int n;
    cin >> n;
    if (n == 1) {
        cout << "1 1\n1\n";
        return 0;
    }
    cout << 2 * (n - 1) << ' ' << 2 << '\n';
    cout << 1 << ' ' << 2 << '\n';
}

#include <bits/stdc++.h>

using namespace std;

#define ll __int64
const int maxn = 1e6+1;

int a[maxn]={0};
int main(int argc, char const *argv[])
{
	int A;
	scanf("%d",&A);

	int ans=0,tmp=0,flag=0;
	for(int i=1;i<=10;i++)
	{
		a[i]++;
		for(int j=i+1;j<maxn;j++){
			a[j]+=a[j-i];
			if(A==a[j]){
				ans=j;
				tmp=i;
				flag=1;
				break;
			}
		}
		if(flag) break;
	}
	printf("%d %d\n",ans,tmp);
	for(int i=1;i<=tmp;i++)
		printf("%d ",i);
	printf("\n");
	return 0;
}

#include<bits/stdc++.h>
using namespace std;

int n;
int main(){
	scanf("%d",&n);
	printf("%d %d\n1 2\n",2*n-1,2);
	return 0;
}

#include<bits/stdc++.h>

using namespace std;

#define ll long long

#define all(x) x.begin(), x.end()

int main(){

	cin.tie(0);
	cin.sync_with_stdio(0);

	#ifdef Cyborg101
		freopen("input.txt", "r", stdin);
		freopen("output.txt", "w", stdout);
	#endif

	int a;
	cin >> a;

	cout << 4 * a - 3 << " 2\n1 4\n";

	return 0;
}

#include <bits/stdc++.h>
using namespace std;
using ll = long long int;

const size_t max_string_length = 100000;
template<class T> struct is_cstr: std::false_type {}; template<int N> struct is_cstr<char[N]> : std::true_type {};
template<typename T> constexpr string formcomm(const T& a) {if constexpr (is_same_v<T, int> || is_same_v<T, size_t>) return "%d"; else if constexpr (is_same_v<T, long long int>) return "%lld"; else if constexpr (is_same_v<T, short int>) return "%hd"; else if constexpr (is_same_v<T, unsigned int>) return "%u"; else if constexpr (is_same_v<T, unsigned long long int>) return "%llu"; else if constexpr (is_same_v<T, unsigned short int>) return "%hu"; else if constexpr (is_same_v<T, char>) return "%c"; else {printf("Type %s non prévu\n", typeid(a).name()); terminate();}}
template<typename T> constexpr string formout(const T& a) {if constexpr (is_same_v<T, float>) return "%.16f"; else if constexpr (is_same_v<T, double>) return "%.16lf"; else if constexpr (is_same_v<T, long double>) return "%.16Lf"; else if constexpr (is_same_v<T, string>) return "%s"; else if constexpr (is_cstr<T>::value) return "%s"; else return formcomm(a);}
template<typename T> const T& addout(const T& a) {return a;} const char* addout(const string& a) {return a.c_str();}
template<typename... Ts> void out(Ts&&... ts) {printf((formout(ts)+...).c_str(), addout(ts)...);}
template<typename It> void outs(It a, It b, string mid = " ", string fin = "\n") {if (a != b) {out(*a); ++a; for (; a != b; ++a) out (mid, *a);} out(fin);}
template<typename T> void outs(const T& l, string mid = " ", string fin = "\n") {outs(l.begin(), l.end(), mid, fin);}
template<typename T> constexpr string formin(const T& a) {if constexpr (is_same_v<T, float>) return "%f"; else if constexpr (is_same_v<T, double>) return "%lf"; else if constexpr (is_same_v<T, long double>) return "%Lf"; else if constexpr (is_same_v<T, string>) return "%s"; else if constexpr (is_cstr<T>::value) return "%s"; else return formcomm(a);}
template<typename T> constexpr int nstring(const T& a) {if constexpr (is_same_v<T, string>) return 1; else return 0;}
template<typename T> T* addin(T& a, char*& buf, string**& as) {return &a;} char* addin(string& a, char*& buf, string**& as) {char* ob = buf;buf+=max_string_length+1;*as = &a;++as;return ob;}
template<typename... Ts> void in(Ts&&... ts) {int ns=(nstring(ts)+...);string* as[max(ns,1)];char buf[1+(max_string_length+1)*ns];char* b=buf;string** c=as;
 scanf((formin(ts)+...).c_str(), addin(ts, b, c)...); while (c > as) {--c; b-=max_string_length+1; **c = string(b);}}
template<typename It> void ins(It a, It b) {for (; a != b; ++a) in (*a);} template<typename T> void ins(T& l) {ins(l.begin(), l.end());}
void inl(char* s) {scanf("%[^\n]", s);} void inl(string& s) {char buf[max_string_length+1]; inl(buf); s = string(buf);}

int main()
{
 int a;
 in(a);
 if (a > 1) out (2*(a-1), " 2\n1 2\n");
 else out("1 1\n1\n");
 return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{
	int n;

	cin >> n;

	if (n == 1)
	{
		cout << 1 << " " << 1 << endl << 1;

		return 0;
	}

	cout << n * 2 - 2 << " " << 2 << endl << "1 2";

	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a;
	cin>>a;
	if (a==1){
		cout<<1<<" "<<1<<endl;
		cout<<1<<endl;
		return 0;
	}
	cout<<2*a-2<<" "<<2<<endl;
	cout<<1<<" "<<2<<endl;
	return 0;
}

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b) for(int i = a; i < int(b); ++i)
#define trav(a, v) for(auto& a : v)
#define all(x) x.begin(), x.end()
#define sz(x) (int)(x).size()

typedef long long ll;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;
typedef vector<vi> vvi;

void debugvi(vi & v){
    for (int i=0; i<v.size(); i++){
        cout<<v[i]<<" ";
    }
    cout<<endl;
}

void debugvvi(vvi & v){
    for (int i=0; i<v.size(); i++){
        debugvi(v[i]);
    }
    cout<<endl;
}

int main(){
    int wmax=300000;
    vi d={1,2};
    int dz=d.size();
    vvi w(dz, vi(wmax,0));
    for (int i=0; i<dz; i++){
        w[i][0]=1;
        for (int j=1; j<wmax; j++){
            if (i>0){
                w[i][j]+=w[i-1][j];
            }
            if (j-d[i]>=0){
                w[i][j]+=w[i][j-d[i]];
            }
        }
    }
    int a;
    cin>>a;
    for (int i=1; i<wmax; i++){
        if (w[1][i]==a){
            cout<<i<<" "<<2<<endl;
            break;
        }
    }
    cout<<1<<" "<<2<<endl;
}

#include <bits/stdc++.h>
using namespace std;
const int n = 100;
int f[n + 10];
int main(){
	f[0] = 1;
	for(int i = 1; i <= n; i ++) f[i] += f[i - 1];
	for(int i = 1; i <= n; i ++) f[i] += f[i - 2];
	//for(int i = 1; i <= 100; i ++) printf("%d\n", f[i]);
	int x;
	scanf("%d", &x);
	printf("%d 2\n1 2\n", x * 2 - 1);

	return 0;
}

#include <bits/stdc++.h>

#define inf 0x3f3f3f3f

#define INF 0x3f3f3f3f3f3f3f3fLL

#define MOD 1000000007

#define pb push_back

#define sq(x) ((x)*(x))

#define x first

#define y second

#define eps 1e-8

#define bpt(x) (__builtin_popcount(x))

#define bptl(x) (__builtin_popcountll(x))

#define bit(x, y) (((x)>>(y))&1)

#define bclz(x) (__builtin_clz(x))

#define bclzl(x) (__builtin_clzll(x))

#define bctz(x) (__builtin_ctz(x))

#define bctzl(x) (__builtin_ctzll(x))

using namespace std;

typedef long long INT;

typedef vector<int> VI;

typedef pair<int, int> pii;

typedef pair<pii, int> pi3;

typedef double DO;

template<typename T, typename U> inline void smin(T &a, U b) {if (a>b) a=b;}

template<typename T, typename U> inline void smax(T &a, U b) {if (a<b) a=b;}

template<typename T> inline void gn(T &x) {char c, sg=0; while (c=getchar(), (c>'9' || c<'0') && c!='-');for((c=='-'?sg=1, c=getchar():0), x=0; c>='0' && c<='9'; c=getchar()) x=(x<<1)+(x<<3)+c-'0';if (sg) x=-x;}

template<class T, class T1>inline void gn(T &x, T1 &y) {gn(x); gn(y);}

template<class T, class T1, class T2>inline void gn(T &x, T1 &y, T2 &z) {gn(x); gn(y); gn(z);}

template<typename T> inline void print(T x) {if (x<0) {putchar('-');return print(-x);}if (x<10) {putchar('0'+x);return;} print(x/10);putchar(x%10+'0');}

template<typename T> inline void println(T x) {print(x), putchar('\n');}

template<typename T> inline void printsp(T x) {print(x), putchar(' ');}

template<class T, class T1> inline void print(T x, T1 y) {printsp(x), println(y);}

template<class T, class T1, class T2> inline void print(T x, T1 y, T2 z) {printsp(x), printsp(y), println(z);}

int power(int a, int b, int m, int ans=1) {

	for (; b; b>>=1, a=1LL*a*a%m) if (b&1) ans=1LL*ans*a%m;

	return ans;

}

int main() {

#ifndef ONLINE_JUDGE

	freopen("in.in", "r", stdin);

	freopen("out.out", "w", stdout);

#endif

	int n;

	gn(n);

	if(n==1){

		puts("1 1");

		puts("1");

	}

	else {

		print((n-1)*2, 2);

		puts("1 2");

	}

	return 0;

}

#include<iostream>
#include<string>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
	int n;
	cin >> n;
	if (n == 1)
	{
		cout << "1" << " " << "2" << endl << "1" << " " << "2";
		return 0;
	}
	else
		cout << (n - 1) * 2 << " " << "2" << endl << "1" << " " << "2";
	return 0;
}

/******************************************
*    AUTHOR:         CHIRAG AGARWAL       *
*    INSTITUITION:   BITS PILANI, PILANI  *
******************************************/
#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
typedef long double LD;

int main()
{
	int a;
	scanf("%d",&a);
	if(a==1)
	{
		printf("%d 1\n",a);
		printf("%d\n",a);
		return 0;
	}
	printf("%d 2\n",2*a-2);
	printf("1 2\n");
	return 0;
}

#include <iostream>
#include <string.h>
#include <math.h>
#include <bits/stdc++.h>
#include <unordered_map>

#define vit vector<int>::iterator
#define vec vector<int>
#define itr ::iterator
#define pb push_back
#define mp make_pair
#define mod(a,b) (a%b+b)%b

/*
vector	void push_back	pop_back
		insert(itr)	erase(itr)
		ITERATOR:
		CONST ITR vec.begin(), vec.end()
		*itr returns the value stored

map 	ret itr .find(Key)
<Key,T> map[key] = T

stack	void push pop
		ret top

queue	void push pop
		ret front

sort(start itr, end itr)

*/

using namespace std;

int main()
{
	int n;
	cin >> n;
	if(n==1)
	{
		cout << 1 << " " << 1 << endl;
		cout << 1 << endl;
	}
	else if(n==2)
	{
		cout << 2 << " " << 2 << endl;
		cout << 1 << " " << 2 << endl;
	}
	else if(n==3)
	{
		cout << 20 << " " << 2 << endl;
		cout << 5 << " " << 2 << endl;
	}
	else
	{
		int a = 2*(n-2);
		cout << a+1 << " " << 3 << endl;
	 	cout << 1 << " " << 2 << " " << a << " " << endl;
	 }
}

// int main(int argv, char* args[])
// {
// 	// int n;
// 	// cin >> n;
// 	long long int b, c;
// 	int n;
// 	cin >> n;
// 	int last = 3;
// 	int total;

// 	if(n==1)
// 	{
// 		cout << 1 << " " << 1 << endl;
// 		cout << 1 << endl;
// 	}
// 	else if(n==2)
// 	{
// 		cout << 2 << " " << 2 << endl;
// 		cout << 1 << " " << 2 << endl;
// 	}
// 	else if(n==3)
// 	{
// 		cout << 20 << " " << 2 << endl;
// 		cout << 5 << " " << 2 << endl;
// 	}
// 	else if(n<999)
// 	{
// 		int a = n-2;
// 		b = a*a;
// 		c = a*a + 1;
// 		cout << setprecision(20)<< c%17 << " " << 3 << endl;
// 		cout << 1 << " " << a%17 << " " << setprecision(20)<<b%17 << endl;
// 	}
// 	else
// 	{
// 	for(int i=2; i<100001; i++)
// 	{
// 		last += (i+2);
// 		if(n>=last && (n-last)%(i+2)==0)
// 		{
// 			cout << "YES" << i << endl;
// 			total = i*(i+1) + (i)*((n-last)/(i+2));
// 			cout << total << " " << 3 << endl;
// 			cout << 1 << " " << i << " " << i+1 << " " << endl;
// 			return 0;
// 		}
// 	}
// 	// // cout << total << endl;
// 	}

// 	// if(n==1)
// 	// {
// 	// 	cout << 1 << " " << 1 << endl;
// 	// 	cout << 1 << endl;
// 	// }
// 	// else if(n==2)
// 	// {
// 	// 	cout << 2 << " " << 2 << endl;
// 	// 	cout << 1 << " " << 2 << endl;
// 	// }
// 	// else if(n==3)
// 	// {
// 	// 	cout << 20 << " " << 2 << endl;
// 	// 	cout << 5 << " " << 2 << endl;
// 	// }
// 	// else
// 	// {
// 	// 	int a = n-2;
// 	// 	b = a*a;
// 	// 	c = a*a + 1;
// 	// 	cout << setprecision(20)<< c << " " << 3 << endl;
// 	// 	cout << 1 << " " << a << " " << setprecision(20)<<b << endl;
// 	// }

// // 	int a, b, count=0, c;
// // 	cin >> a >> b >> c;
// // 	cout << a<< b << endl;
// // 	for(int j=0; j<=c ; j++)
// // 		{
// // 			count=0;
// // 			for(int i=0; i<=b; i++)
// // 	{
// // 		count += (a*b+j - a*i)/a + 1;
// // 	}
// // 	cout << count << endl;;
// // }

// }

#include <iostream>
using namespace std;
int main ()
{
	int a;
	cin >> a;
	if (a == 1)
	{
		cout << 1 << ' ' << 1 << endl;
		cout << 1 << endl;
	}
	else
	{
		cout << 2* (a - 1) << ' ' << 2 << endl;
		cout << 1 << ' ' << 2 << endl;
	}
	return 0;
}

#include <bits/stdc++.h>
using namespace std;

#define ll long long int

int gcd(int a,int b){
    if(b==0)
    return a;
    return gcd(b,a%b);
}

int main(){
ll n;
cin>>n;

ll ret = 2*n - 1;
ll m = 2;
cout << ret << " " << m << endl;
cout << "1" << " " << "2" << endl;

}

#include<bits/stdc++.h>
using namespace std;
#define M 1000000007
#define ll long long
#define pb push_back
#define F first
#define S second
#define vl vector<ll>
#define vvl vector<vl>
#define pii pair<int,int>
#define pll pair<ll,ll>

int main()
{
	ll n;
	cin >> n;

	cout << 2*n-1 << " " << 2 << endl;
	cout << "1 2" << endl;
}

#include <bits/stdc++.h>
#define int long long
#define mp make_pair
#define pb push_back
using namespace std;
const int N = 1123456;
const int mod = 1e9 + 7;
const int inf = 1e9 + 7;
int read()
{
    int x;
    scanf("%I64d", &x);
    return x;
}
main()
{
    int n, m, i, j;
    cin >> n;
    if(n == 1) {
        puts("1 1");
        puts("1");
        return 0;
    }
    cout << n * 2 - 1 << " " << 2 << endl;
    cout << 1 << " " << 2 << endl;
}

#include <bits/stdc++.h>

using namespace std;

#ifdef ONLINE_JUDGE
#define OJ 1
#else
#define OJ 0
#endif

#define dd				double
#define ll 				long long
#define pb 				push_back
#define mp 				make_pair
#define X				first
#define Y				second
#define forn( i, n ) 	for( ll i = 0; i < (ll) (n); i ++ )
#define endl 			'\n'

#define TIMESTAMP fprintf(stderr, "Execution time: %.3lf s.\n", (double)clock()/CLOCKS_PER_SEC)

struct __s { __s() {
		//srand( time( NULL ) );
		//freopen( "input.txt", "r", stdin ); freopen( "output.txt", "w", stdout );
		if( OJ ) { ios_base::Init i; cin.sync_with_stdio( 0 ); cin.tie( 0 ); }
	} ~__s() {
		if( !OJ ) TIMESTAMP;
		ll n; cin >> n;
	}
} __S;

ll N = 2;
ll a[10] = { 2, 3 };
ll dp[1111111][11];

ll b[111111];
bool u[111111];

int main( void ) {
	dp[0][0] = 1;
	forn( i, 1000001 ) {

		forn( j, N ) {
			forn( k, j+1 ) {
				dp[i + a[j]][j] += dp[i][k];
			}
		}
		ll sum = 0;
		forn( j, 11 )
			sum += dp[i][j];
		if( sum < 111111 ) {
			b[sum] = i;
			u[sum] = true;
		}
		//cout << i << " " << sum << endl;
	}
	forn( i, 100001 ) {
		if( !u[i] )
			cout << i << endl;
	}
	ll n;
	cin >> n;
	cout << b[n] << " " << N << endl;
	forn( i, N ) {
		cout << a[i] << " ";
	}
	cout << endl;
	return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#pragma comment(linker, "/STACK:16777216")

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <unordered_map>
#include <queue>
#include <set>
#include <bitset>
#include <map>
#include <iomanip>
#include <deque>
#include <stack>
#include <cmath>
#include <unordered_set>
#include <cassert>
//#include "optimization.h"

using namespace std;

typedef long long ll;
const ll md = 1e9 + 7;

int main() {
	iostream::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);

	//freopen("fragmentation.in", "r", stdin);
	//freopen("fragmentation.out", "w", stdout);

	int a;
	cin >> a;

	if (a == 1) {
		cout << "1 1\n1\n";
		return 0;
	}

	cout << 2 * (a - 1) << ' ' << "2\n1 2\n";

	return 0;
}

#include "bits/stdc++.h"
#define puba push_back
#define ff first
#define ss second
#define bend(_x) begin(_x), end(_x)
#define szof(_x) ((int) (_x).size())
#define TASK_NAME ""

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int INF = 1e9 + 7;
const ll INFL = 1e18 + 123;
const double PI = atan2(0, -1);
mt19937 tw(960172);
ll rnd(ll x, ll y) { static uniform_int_distribution<ll> d; return d(tw) % (y - x + 1) + x; }

const int SZ = 200;
int arr[SZ];

int main() {
    //freopen(TASK_NAME ".in", "r", stdin);
    //freopen(TASK_NAME ".out", "w", stdout);
    cerr << fixed << setprecision(15);
    cout << fixed << setprecision(15);

    /*
    arr[0] = 1;

    for (int i : {2, 3}) {
        for (int j = 0; j + i < SZ; ++j) {
            arr[j + i] += arr[j];
        }
    }

    cerr << arr[102] << "\n";
    */
    /*
    for (int i = 0; i < SZ / 6; ++i) {
        cerr << arr[i * 6] << " ";
    }
    cerr << "\n";
    */
    int n;
    scanf("%d", &n);

    if (n == 1) {
        cout << "1 1\n1\n";
    } else {
        cout << (n - 1) * 6 << " 2\n2 3\n";
    }

    #ifdef LOCAL
        cerr << "time: " << clock() << endl;
    #endif
    return 0;
}

#include <cstdio>

using namespace std;
int n;
int main()
{
    scanf ("%d", &n);
    if (n==1)
        printf ("%d %d\n%d\n", 1, 1, 1);
    else
    {
        n*=2;
        n-=2;
        printf ("%d %d\n%d %d\n", n, 2, 1, 2);
    }
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
    long long int n;
    cin>>n;
    cout<<(n*2)-1<<" "<<2<<endl;
    cout<<1<<" "<<2;
}

#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
   // freopen("a.in","r",stdin);
   // freopen("a.out","w",stdout);
    scanf("%d",&n);
    if(n==1)
    {
        printf("1 2\n");
        printf("1 2\n");
        return 0;
    }
    n--;
    n*=2;
    printf("%d ",n);
    printf("2\n1 2");
    return 0;
}

/*******************************************************************
  author : touchme-o
 problem : Save the problem!
    time : 2017-10-02 19:16:01
 *******************************************************************/

#include <iostream>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <time.h>
#include <limits.h>
#include <assert.h>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <list>
#include <bitset>
#include <vector>
using namespace std;

#define forn(i, n) for (int i = 0; i < (int)(n); ++i)
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define Pr(kcase,ans) printf("Case #%d: %lld\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<" "; cout<<a[n]<<endl;
#define lowbit(x) ((x)&-(x))
#define SI(a) ((a).size())
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define MAX 35
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define LL long long

int main(int argc, char const *argv[])
{
	// fstream cin("data.in");
	int n;cin>>n;
	if(n==1) printf("1 1\n1\n");
	else {
		printf("%d %d\n1 2\n",(n-1)*2+(n&1),2);
 	}
	return 0;
}

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
using namespace std;
int main(){
	int n;
	cin>>n;
	cout<<max(2 * n - 1, 1)<< " "<< 2<<endl;
	cout<<1<<" "<<2<<endl;
}

//866A
#include <iostream>

using namespace std;

int main()
{
    int SoCach; cin>>SoCach;

    if(SoCach==1) cout<<1<<" "<<2<<endl;
    else cout<<SoCach*2-2<<" "<<2<<endl;
    cout<<1<<" "<<2<<endl;

    return 0;
}

#include<bits/stdc++.h>
#define ll long long
#define ios ios_base::sync_with_stdio(false)

using namespace std;

const ll INF=(1ll<<62)-1;
const int inf=(1<<30)-1;

    int main()
    {
        ios;
        int n;
        cin>>n;

        int A=2*(n-1)+1;
        cout<<A<<" "<<2<<endl;
        cout<<1<<" "<<2<<endl;

    }

#include <bits/stdc++.h>
using namespace std;

const int N = 2e5 + 5;

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int a;
	cin >> a;
	cout << 2 * a - 1 << " " << 2 << "\n" << "1 2";

}

#include <iostream>
using namespace std;
#include<string.h>
#include<set>
#include<stdio.h>
#include<math.h>
#include<queue>
#include<map>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include <cstdio>
#include <cstdlib>
#include<stack>
#include<vector>
int main()
{
    int n;
    cin>>n;
    if(n==1)
    {
        cout<<"1"<<' '<<"1"<<endl;
        cout<<"1"<<endl;
        return 0;
    }
    cout<<n*2-2<<' '<<"2"<<endl;
    cout<<"1"<<' '<<"2"<<endl;
    return 0;
}

#include <iostream>

using namespace std;

int a;

int main()
{
    std::ios::sync_with_stdio(false);
    cin>>a;
    if(a==1){
        cout<<1<<" "<<2<<endl;
        cout<<1<<" "<<2;
        return 0;
    }
    cout<<(a-1)*10<<" "<<2<<endl;
    cout<<5<<" "<<2;

    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a; cin >> a;
    cout << max((a - 1) * 2, 1) << " 2\n1 2";
    return 0;
}

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <set>
#include <string>
using namespace std;

int main() {
	int n;
	while (cin >> n) {
		if (n >= 2)
			cout << 2 * (n - 1) << " 2\n1 2\n";
		else
			cout << "1 1\n 1\n";
	}
}

#include <bits/stdc++.h>

#define ll long long
#define mp make_pair
#define pb push_back
#define pii pair <int, int>
#define pll pair <ll, ll>
#define f first
#define s second
#define ins insert
#define ers erase
#define rtn return
#define sz size
#define fop freopen

using namespace std;

const int maxn = (int)(1e5 + 11);
const int inf = (int)(1e9 + 7);
const int base = (int)(1e9 + 7);
const int mod = (int)(1e9 + 7);
const int R = (int)(1e6);
const double eps = (double)(1e-9);

int n, m, a, d[15], dp[R + 1];

inline bool check(int x){
	memset(dp, 0, sizeof(dp));
    dp[0] = 1;
    for(int i = 1; i <= m; ++i){
        for(int j = i; j <= x; ++j){
            dp[j] = dp[j] + dp[j - i];
            if(dp[j] > a) return true;
        }
    }
	if(dp[x] <= a) return false;
	if(dp[x] > a) return true;
}

inline bool eq(int x){
	memset(dp, 0, sizeof(dp));
    dp[0] = 1;
    for(int i = 1; i <= m; ++i){
        for(int j = i; j <= x; ++j){
            dp[j] = dp[j] + dp[j - i];
            if(dp[j] > a) return false;
        }
    }
    if(dp[x] == a) return true;
    return false;
}

inline int bin(int l, int r){
	while(r - l > 1){
		int m = (l + r) / 2;
		if(check(m)){
			r = m;
		} else {
			l = m;
		}
	}
	if(eq(l)) return l;
	if(eq(r)) return r;
	return -1;
}

int main(){
	cin >> a;
    ios_base :: sync_with_stdio(false);
	for(m = 1; m <= 10; ++m){
		n = bin(1, R);
		if(n != -1) break;
	}
	cout << n << " " << m << endl;
	for(int i = 1; i <= m; ++i){
		cout << i << " ";
	}
    return 0;
}

#include<cstdio>

int n;

int main() {
    scanf("%d",&n);
    if(n == 1)
        printf("1 1\n1");
    else {
        printf("%d %d\n",n*2 - 1 ,2);
        printf("1 2");
    }
}

#import<cstdio>
main(int n){scanf("%d",&n);printf("%d 2 1 2",2*n-1);}

/*Flow..................*/
#include <string>
#include <vector>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <stack>
#include <queue>
#include <cmath>
#include <algorithm>
#include <functional>
#include <list>
#include <deque>
#include <bitset>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <cstring>
#include <sstream>
#include <complex>
#include <iomanip>
#include <numeric>
#include <cassert>
#include <climits>
#include <utility>
#include <ctime>
#include <tuple>
#include <fstream>
#include <cctype>
#define FOR(i,a,n) for(i=a;i<n;i++)
#define FORD(i,a,n) for(i=a;i>=n;i--)
#define FORS(i,a) for(i=0;a[i];i++)
#define si(x) scanf("%d",&x)
#define sd(x) scanf("%lf",&x)
#define sll(x) scanf("%lld",&x)
#define ss(x) scanf("%s",x)
#define prs(x) printf("%d ",x)
#define pls(x) printf("%lld ",(long long)x)
#define pi(x) printf("%d\n",x)
#define pd(x) printf("%0.10lf\n",x);
#define pll(x) printf("%lld\n",(long long)x)
#define ps(x) printf("%s\n",x)
#define M 1000000007
#define ll long long
#define all(x) x.begin(),x.end()
#define pb push_back
#define fr first
#define se second
#define in insert
#define er erase
#define pii pair<int, int>
#define plll pair<long long, long long>
#define PI 3.14159265358979323846264338327950288419716939937510582097494459230
#define fre freopen("input.txt","r",stdin),freopen("output.txt","w",stdout)
using namespace std;
ll gcd (ll a, ll b) {return ( a ? gcd(b%a, a) : b );}
ll power(ll a, ll n) {ll p = 1;while (n > 0) {if(n&1) {p = p * a;} n >>= 1; a *= a;} return p;}
ll power(ll a, ll n, ll mod) {ll p = 1;while (n > 0) {if(n&1) {p = p * a; p %= mod;} n >>= 1; a *= a; a %= mod;} return p % mod;}
#define bs(x,y,z,w) {cerr<<x<<" "<<#y<<"="<<y<<" "<<#z<<"="<<z<<" "<<#w<<"="<<w<<endl;}
#define ts(x,u,y,z,w) {cerr<<x<<" "<<#u<<"="<<u<<" "<<#y<<"="<<y<<" "<<#z<<"="<<z<<" "<<#w<<"="<<w<<endl;}
#define trace(x) {cerr << #x << "=" << x <<endl;}
#define trace2(x, y) {cerr << #x << "=" << x << " " << #y << "=" << y <<endl;}
#define trace3(x, y, z) {cerr << #x << "=" << x << " " << #y << "=" << y << " " << #z << "=" << z << endl;}
template <typename T> ostream& operator<<(ostream& os, const vector<T> &p){os << "[ "; for (T x: p) os << x << " "; os << "]" << endl; return os;}
template <typename T> ostream& operator<<(ostream& os, const set<T> &p){os << "{ "; for (T x: p) os << x << " "; os << "}" << endl; return os;}
template <typename T> ostream& operator<<(ostream& os, const multiset<T> &p){os << "{ "; for (T x: p) os << x << " "; os << "}" << endl; return os;}
template <typename Tk, typename Tv> ostream& operator<<(ostream& os, const map<Tk, Tv> &p){os << "{ "; for (pair<Tk, Tv> x: p) os << x << " "; os << "}" << endl; return os;}
template <typename Tk, typename Tv> ostream& operator<<(ostream& os, const pair<Tk, Tv> &p){os << "{" << p.first << ',' << p.second << "}";return os;}

int main()
{
   int i,j;
   int a;
   si(a);
   if(a==1)
   {
   	puts("1 1");
   	puts("1");
   	return 0;
   }
   prs(2*(a-1)),pi(2);
   puts("1 2");
   return 0;
}

#include <bits/stdc++.h>
using namespace std;
long a;
int main()
{
//    freopen("in.inp","r",stdin);
//    freopen("out.out","w",stdout);
    cin >> a ;
    if (a==1)
    {
        cout << 3 << " " << 1 << "\n";
        cout << 1 ;
        return 0 ;
    }
    cout << (a-1)*2 << " " << 2 << "\n";
    cout << 1 << " " << 2 ;
    return 0;
}

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <utility>
#include <ctime>
#include <map>
#include <set>

using namespace std;

#define endl "\n"
#define K first
#define F second
#define S third
#define mp make_pair
#define mt make_triple

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const ld PI = 3.141592653589793;
const ld E = 2.71828182845904523;
const ll LLINF = 4000000009000000099;
const ll INF = 1009000099;
const ll MOD7 = 1000000007;
const ll MOD9 = 1000000009;

template<class A, class B, class C> struct triple { A first; B second; C third; triple(A, B, C); triple(); };
template<class A, class B, class C> triple<A, B, C>::triple(A a, B b, C c) { first = a; second = b; third = c; }
template<class A, class B, class C> triple<A, B, C>::triple() { }
template<class A, class B, class C> triple<A, B, C> make_triple(A a, B b, C c) { triple<A, B, C> t(a, b, c); return t; }
template<class A, class B, class C> bool operator<(triple<A, B, C> a, triple<A, B, C> b) { if (a.first != b.first) return a.first < b.first; if (a.second != b.second) return a.second < b.second; if (a.third != b.third) return a.third < b.third; }
template<class T> T inline sqr(T a) { return a * a; }

ll bpow(ll a, ll d, ll mod) { if (d == 1) return a; ll t = bpow(a, d / 2, mod); t = (t * t) % mod; if (d & 1) t = (t * a) % mod; return t; }
ll bpow(ll a, ll d) { if (d == 1) return a; ll t = bpow(a, d / 2); t = (t * t); if (d & 1) t = (t * a); return t; }
ll gcd(ll a, ll b) { while (a && b) if (a > b) a %= b; else b %= a; return a + b; }
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }
ll C(ll n, ll k) { ll res = 1; for (int i = 1; i <= k; ++i) res = res * (n - k + i) / i; return res; }
ll C(ll n, ll k, ll mod) { ll u = 1, d = 1; for (int i = 2; i <= n; ++i) u = (u * i) % mod; int x = max(k, n - k), z = min(k, n - k); for (int i = 2; i <= x; ++i) { d = (d * i) % mod; if (i <= z) d = (d * i) % mod; } d = bpow(d, mod - 2, mod); ll res = (u * d) % mod; return res; }

ll n, s;
vector<triple<ll, ll, ll>> v;

int cmp(triple<ll, ll, ll> a, triple<ll, ll, ll> b)
{
	return (a.F - a.S) < (b.F - b.S);
}

int main() {
	ios::sync_with_stdio(0);
	/*cin >> n >> s;
	v.resize(n);
	for (int i = 0; i < n; ++i)
		cin >> v[i].K >> v[i].F >> v[i].S;

	sort(v.rbegin(), v.rend(), cmp);
	ll ans = 0;
	for (int i = 0; i < n; ++i)
		ans += v[i].K * v[i].S;
	ll k = 0;
	int idx = 0;
	while (idx < n && (v[idx].F - v[idx].S) > 0)
		idx++;
	ll sum = 0;
	for (int i = 0; i < n; ++i)
		sum += v[i].K;
	ll rem = (s - sum % s) % s;
	if (v[0].F - v[0].S > 0)
	{
		for (int i = 0; i < idx; ++i)
			k += v[i].K;
		ll v1 = k / s * s;
		ll v2 = (k + s - 1) / s * s;
		ll cur = ans;
		for (int i = 0; v1 > 0 && i < n; ++i)
		{
			ans += (v[i].F - v[i].S) * min(v[i].K, v1);
			v1 -= v[i].K;
		}
		int used = (v2 / s == (sum + s - 1) / s);
		for (int i = 0; v2 > 0 && i < n; ++i)
		{
			if (!used && v[i].F - v[i].S < 0) v2 = max(v2 - rem, 0LL), used = 1;
			cur += (v[i].F - v[i].S) * min(v[i].K, v2);
			v2 -= v[i].K;
		}

		ans = max(ans, cur);
	}

	cout << ans;*/
	int k; cin >> k;

	vector<int> dp(1e6);
	dp[2] = 1;
	for (int i = 4; i < 1e6; ++i)
		dp[i] += dp[i - 2];
	dp[3] = 1;
	for (int i = 4; i < 1e6; ++i)
		dp[i] += dp[i - 3];
	int ans = -1;
	for (int i = 2; i < 1e6; ++i)
		if (dp[i] == k)
			ans = i;
	//cout << dp[1e6 - 1] << endl;
	cout << ans << " 2" << endl;
	cout << "2 3" << endl;
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define mp make_pair
#define si(x) int(x.size())
const int mod=1000000007,MAX=200005,INF=1<<30;

int main(){

    std::ifstream in("text.txt");
    std::cin.rdbuf(in.rdbuf());
    cin.tie(0);
    ios::sync_with_stdio(false);

    int A;cin>>A;
    if(A==1){
        cout<<1<<" "<<1<<endl;
        cout<<1<<endl;
    }else{
        A--;
        cout<<5*A<<" "<<2<<endl;
        cout<<1<<" "<<5<<endl;
    }
}

#include <iostream>
#include <cstdio>

using namespace std;
int main(){
    long long  n;
    scanf("%I64d",&n);
    if(n==1){
        printf("1 1\n");
        printf("1\n");
        return 0;
    }
    printf("%I64d 2\n",(n-1)*2);
    printf("1 2\n");
    return 0;
}

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<b;i++)
#define per(i,a,b) for(int i=a;i>b;i--)
#define repLL(i,a,b) for(LL i=(LL)a;i<(LL)b;i++)
#define perLL(i,a,b) for(LL i=(LL)a;i>(LL)b;i--)
#define debug5(a,b,c,d,e) cerr<<#a<<": "<<a<<" "<<#b<<": "<<b<<" "<<#c<<": "<<c<<" "<<#d<<": "<<d<<" "<<#e<<": "<<e<<endl;
#define debug4(a,b,c,d)  cerr<<#a<<": "<<a<<" "<<#b<<": "<<b<<" "<<#c<<": "<<c<<" "<<#d<<": "<<d<<endl;
#define debug3(a,b,c) cerr<<#a<<": "<<a<<" "<<#b<<": "<<b<<" "<<#c<<": "<<c<<endl;
#define debug2(a,b) cerr<<#a<<": "<<a<<" "<<#b<<": "<<b<<endl;
#define debug(a) cerr<<#a<<": "<<a<<endl;
#define pb push_back
#define mp make_pair
#define SZ(x) ((int)(x).size())
#define ALL(x) x.begin(),x.end()
#define fi first
#define se second
#define _upgrade ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;

typedef long long LL;
typedef pair<int,int> PII;
typedef pair<LL,LL> PLL;
typedef vector<PII> VPII;
typedef vector<PLL> VPLL;
typedef vector<LL> VLL;
typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<char> VC;
typedef long double LD;
typedef pair<LD,LD> PLD;
typedef vector<LD> VLD;
typedef vector<PLD> VPLD;

const int maxn=(1e6)+7;
const int inf=(1e9)+7;
const LL LLinf=(1e18)+7;
const LD eps=1e-9;
const LL mod=1e9+7;

// ***************************** CODE ***************************** //

int main()
{
      _upgrade
      int n;
      cin>>n;
      if(n==1)
      {
            cout<<"1 1\n1";
            return 0;
      }
      cout<<2*n-2<<" "<<2<<endl<<"1 2";
      return 0;
}

#include<iostream>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie();
    int n;
    bool parz=true;
    cin>>n;
    if (n==1)
        cout<<"1 1"<<endl<<"1";
    else if (n%2==0)
        cout<<n*2-2<<" 2"<<endl<<"1 2";
    else
        cout<<n*2-2<<" 2"<<endl<<"1 2";
    return 0;
}

#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <cstdio>
#include <set>
using namespace std;
/*int a[1010];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    sort(a,a+n);
    int cnt=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]!=-1)
        {
            cnt++;
            int temp=a[i];
            for(int j=i+1;j<n;j++)
            {
                if(a[j]>temp)
                {
                    temp=a[j];
                    a[j]=-1;
                }
            }
        }
    }
    printf("%d\n",cnt);
    return 0;
}*/
int main()
{
    int n;
    scanf("%d",&n);
    n--;
    printf("%d 2\n",2*n+1);
    printf("1 2\n");
    return 0;
}

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
  int n;
  scanf("%d",&n);
  if(n==1)
  {
  	printf("1 1\n");
  	printf("1\n");
  	return 0;
  }
  int t=(n-1)*2;
  printf("%d 2\n",t);
  printf("1 2\n");
  return 0;
}

#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;

const int MAX = 1e6+7;

ll dp[MAX];

int main()
{
   int n;scanf("%d", &n);
   for(int i = 1; i<=10; ++i)
   {
      dp[i]++;
      for(int j = i+1; j<MAX; ++j)
      {
        dp[j]+=dp[j-i];
        if(dp[j]==n){
           printf("%d %d\n", j, i);
           for(int k = 1; k<=i; ++k)printf("%d ", k);
           return 0;
        }
      }
   }
   assert(false);

   return 0;
}

#include<iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    cout<<2*n-1<<" 2"<<endl<<"1 2"<<endl;
}

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<cstdlib>
#include<algorithm>
#include<map>
#include<string>
#include<queue>
#define mem(a) memset(a,0,sizeof(a))
#define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b)
using namespace std;
typedef long long ll;
const long long maxn=1e3+5;
const int inf=0x3f3f3f3f;
long long n,m,i,j,k,l,T,z=-8e18,p,q,r;
int main()
{
    scanf("%lld",&n);
    for(i=0;i<n;i++)
    {
        z=(n-1)*2+1;
    }
    printf("%lld 2\n1 2",z);
}

/*
 * if you are interested in the reference code here,
 * see https://github.com/georeth/OJLIBS for more information
 *
 * Solution Author : Georeth Chow <georeth2010@gmail.com>
 */
#include <cstdio>
#include <cmath>
#include <climits>      // INT_MIN LLONG_MIN
#include <cfloat>       // DBL_MIN DBL_MAX
#include <cstring>      // memset
#include <cstdlib>      // malloc
#include <cstdint>      // int64_t
#include <cinttypes>    // PRId64 SCNd64
#include <ctime>        // clock
#include <cassert>      // assert
#include <limits>       // numeric_limits
#include <vector>
#include <deque>
#include <map>
#include <set>
#include <tuple>        // pair, tuple
#include <iostream>     // be careful.
                        // mix with cstdio: slowwww...
                        // mix with cstdio + fastio: bug
#include <sstream>
#include <algorithm>
using namespace std;    // use as solution header. name polution is fine.
#ifdef LOCAL_JUDGE
#  define pr_debug(...) fprintf(stderr, __VA_ARGS__)
#  define pr_line() fprintf(stderr, "%s: %d\n", __FILE__, __LINE__)
#else
#  define pr_debug(...)
#  define pr_line()
#endif
template <typename T>
bool chmax(T &m, const T &v) { if (v > m) return m = v, true; return false; }
template <typename T>
bool chmin(T &m, const T &v) { if (v < m) return m = v, true; return false; }
static const int HMAX32 = INT32_MAX / 2;
static const int HMIN32 = -HMAX32;
static const int64_t HMAX64 = INT64_MAX / 2;
static const int64_t HMIN64 = -HMAX64;
#define ALL(x) begin(x), end(x)
#define FOR0(i,n) for(int i=0,i##end=n;i<i##end;i++)
#define FOR1(i,n) for(int i=1,i##end=n;i<=i##end;i++)
#define FOR(i,a,b) for(int i=a,i##end=b;i<=i##end;i++)
#define FOD0(i,n) for(int i=(n)-1;~i;i--)
#define FOD1(i,n) for(int i=n;i;i--)
#define FOD(i,a,b) for(int i=a,i##end=b;i>=i##end;i--)
#define FORE(i,x)for(__typeof(x.end())i=x.begin();i!=x.end();++i)
namespace fio {
typedef unsigned int uint;
typedef long long ll;
typedef unsigned long long ull;
typedef double lf;
typedef long double llf;
template<typename T> inline T abs(T a){return a>0?a:-a;}
struct Cg{inline char operator()(){return (char)getchar();}};
struct Cp{inline void operator()(char x){putchar(x);}};
struct Cpe{inline void operator()(char x){putc(x,stderr);}};
inline bool IS(char x){return x==10||x==13||x==' ';}template<typename T>struct Fr{T P;inline Fr&operator,(int &x)
{x=0;char t=P();while((t<'0'||t>'9')&&t!='-')t=P();bool f=0;if(t=='-')t=P(),f=1;x=t-'0';for(t=P();t>='0'&&t<='9';t=P())x=x*10+t-'0';if(f)x=-x;return *this;}inline operator int(){int x;*this,x;return x;}inline Fr&operator,(ll &x){x=0;char t=P();while((t<'0'||t>'9')&&t!='-')t=P();bool f=0;if(t=='-')t=P(),f=1;x=t-'0';for(t=P();t>='0'&&t<='9';t=P())x=x*10+t-'0';if(f)x=-x;return *this;}inline operator ll(){ll x;*this,x;return x;}inline Fr&operator,(char &x)
{for(x=P();IS(x);x=P())continue;return *this;}inline operator char(){char x;*this,x;return x;}inline Fr&operator,(char *x){char t=P();for(;IS(t);t=P())continue;if(~t){for(;!IS(t)&&~t;t=P())*x++=t;}*x++=0;return *this;}inline Fr&operator,(lf &x){x=0;char t=P();while((t<'0'||t>'9')&&t!='-')t=P();bool f=0;if(t=='-')t=P(),f=1;x=t-'0';for(t=P();t>='0'&&t<='9';t=P())x=x*10+t-'0';if(t=='.'){lf u=0.1;for(t=P();t>='0'&&t<='9';t=P(),u*=0.1)x+=u*(t-'0');}if(f)x=-x;return *this;}inline operator lf(){lf x;*this,x;return x;}inline Fr&operator,(llf &x){x=0;char t=P();while((t<'0'||t>'9')&&t!='-')t=P();bool f=0;if(t=='-')t=P(),f=1;x=t-'0';for(t=P();t>='0'&&t<='9';t=P())x=x*10+t-'0';if(t=='.'){lf u=0.1;for(t=P();t>='0'&&t<='9';t=P(),u*=0.1)x+=u*(t-'0');}if(f)x=-x;return *this;}inline operator llf()
{llf x;*this,x;return x;}inline Fr&operator,(uint &x){x=0;char t=P();while(t<'0'||t>'9')t=P();x=t-'0';for(t=P();t>='0'&&t<='9';t=P())x=x*10+t-'0';return *this;}inline operator uint(){uint x;*this,x;return x;}inline Fr&operator,(ull &x){x=0;char t=P();while(t<'0'||t>'9')t=P();x=t-'0';for(t=P();t>='0'&&t<='9';t=P())x=x*10+t-'0';return *this;}inline operator ull(){ull x;*this,x;return x;}};
template<typename T>struct Fw{T P;inline Fw&operator,(int x){if(x){if(x<0)P('-'),x=-x;char s[10];int c=0;while(x)s[c++]=x%10+'0',x/=10;while(c--)P(s[c]);}else P('0');return *this;}inline Fw&operator()(int x){if(x){if(x<0)P('-'),x=-x;char s[10];int c=0;while(x)s[c++]=x%10+'0',x/=10;while(c--)P(s[c]);}else P('0');return *this;}inline Fw&operator,(uint x){if(x){char s[10];int c=0;while(x)s[c++]=x%10+'0',x/=10;while(c--)P(s[c]);}else P('0');return *this;}
inline Fw&operator()(uint x){if(x){char s[10];int c=0;while(x)s[c++]=x%10+'0',x/=10;while(c--)P(s[c]);}else P('0');return *this;}inline Fw&operator,(ll x){if(x){if(x<0)P('-'),x=-x;char s[19];int c=0;while(x)s[c++]=x%10+'0',x/=10;while(c--)P(s[c]);}else P('0');return *this;}inline Fw&operator()(ll x){if(x){if(x<0)P('-'),x=-x;char s[19];int c=0;while(x)s[c++]=x%10+'0',x/=10;while(c--)P(s[c]);}else P('0');return *this;}inline Fw&operator,(ull x){if(x){char s[20];int c=0;while(x)s[c++]=x%10+'0',x/=10;while(c--)P(s[c]);}else P('0');return *this;}inline Fw&operator()
(ull x){if(x){char s[20];int c=0;while(x)s[c++]=x%10+'0',x/=10;while(c--)P(s[c]);}else P('0');return *this;}inline Fw&operator,(char x){P(x);return *this;}inline Fw&operator()(char x){P(x);return *this;}inline Fw&operator,(const char *x){while(*x)P(*x++);return *this;}
inline Fw&operator()(const char *x){while(*x)P(*x++);return *this;}inline Fw&operator()(lf x,int y){if(y){lf t=0.5;for(int i=y;i--;)t*=0.1;if(x>=0)x+=t;else x-=t,P('-');*this,(ll)(abs(x));P('.');if(x<0)x=-x;while(y--){x*=10;x-=floor(x*0.1)*10;P(((int)x)%10+'0');}}else if(x>=0)*this,(ll)(x+0.5);else *this,(ll)(x-0.5);;return *this;}inline Fw&operator()(llf x,int y){if(y){lf t=0.5;for(int i=y;i--;)t*=0.1;if(x>=0)x+=t;else x-=t,P('-');*this,(ll)(abs(x));P('.');if(x<0)x=-x;while(y--){x*=10;x-=floor(x*0.1)*10;P(((int)x)%10+'0');}}else if(x>=0)*this,(ll)(x+0.5);else *this,(ll)(x-0.5);;return *this;}};
}
fio::Fw<fio::Cp> fout;
fio::Fw<fio::Cpe> ferr;
fio::Fr<fio::Cg> fin;
/* =====  SOLUTION START  ===== */
// formalize:
// dimension analysis:
int a, m, n;
int main() {
    scanf("%d", &n);
    printf("%d %d\n1 2\n", 2 * n - 1, 2);
    return 0;
}

#include<stdio.h>

int main(){
    int n;
    scanf("%d",&n);
    if(n==1){
        printf("1 1\n1\n");
    }
    else{
        printf("%d 2\n",(n-1)*2);
        printf("1 2\n");
    }

    return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
   int n;cin>>n;
   cout<<(2*n)-1<<" "<<2<<endl<<1<<" "<<2;
}

#include <bits/stdc++.h>
using namespace std;
int n;

int main() {
    scanf("%d",&n);
    if (n==1) {
        puts("1 1\n1");
        return 0;
    }
    printf("%d %d\n1 2\n",n*2-2,2);
    return 0;
}

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <map> // STL
#include <string>
#include <vector>
#include <queue>
#include <stack>
#define mpr make_pair
#define debug() puts("okkkkkkkk")

using namespace std;

typedef long long LL;

const int inf = 1 << 26;

int main(){
	int n;
	cin>>n;
	cout<<2*n-1<<" " <<2 << " " << 1 << " " << 2 << endl;

	return 0;
}

#include <bits/stdc++.h>
using namespace std;

#define sz(a) int(a.size())
int main()
{
	int a;
	cin >> a;
	cout << 2*a-1;
	puts(" 2\n1 2");
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long int
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL);

int main()
 {
    fast;
    ll n;
    cin>>n;
    if(n>1)
    {
    cout<<2*(n-1)<<" "<<"2"<<endl;
    cout<<"1"<<" "<<"2"<<endl;
    }
    else
    {
        if(n==1)
        cout<<"1"<<" "<<"1"<<endl;
          cout<<"1"<<endl;

    }

 }

#include <cstdio>
int main(){
    int a;
    scanf("%d",&a);
    printf("%d 2\n",2*a-2);
    printf("1 2");
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	cout<<n<<" 2"<<endl;

cout<<1<<" "<<0;

}

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
int main()
{
    {ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);}
	ll n;
	cin>>n;
    cout<<1<<" "<<1<<endl;
    cout<<1<<endl;
	return 0;
}

#include<stdio.h>

int main(){
	int n;
	scanf("%d",&n);
	printf("%d 2\n",2*n);
	printf("1 2\n");
}

#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (int i = (a); i < (b); i++)
#define rep2(r, aa, bb) for (int r = (aa)-1; r >= (bb); r--)
#define be(x) (x.begin(), x.end())
#define pb(t) push_back(t)
#define ll long long
#define mp(a, b) make_pair(a, b)
#define f first
#define s second
const int MAX=1000*100+5;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
	int n;
	cin>>n;
	cout<<2<<" "<<n+1<<"\n"<<1<<" "<<2<<"\n";
}

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    cout << (n - 1) + 2 << " 2"<< endl;
    cout << "1 2" << endl;     /// way 1 + (17 * 2)
    return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include<sstream>
#include<iomanip>
#include<cmath>
#include<complex>
#include<cstring>
#include<string>
#include<algorithm>
#include<assert.h>
#include<vector>
#include<stack>
#include <utility>
#include<set>
#include<bitset>
#include<queue>
#include<map>
#include<valarray>
#include<numeric>
using namespace std;
const int OO = 1 << 24;
const double PI = acos(-1.0);
const double EPS = (1e-9);
typedef long long ll;
typedef complex<double> point;
#define all(v) ((v).begin()),((v).end())
#define rep(i,n) for(int(i)=0;(i)<(int)n;(i)++)
#define clr(v,idx) memset(v,idx,sizeof(v));
#define vi vector<int>
#define vll vector<ll>
#define vs vector<string>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pis pair<int,string>
#define scl(x) scanf("%lld",&x)
#define sc(x)  scanf("%d",&x)
# define mark  cout << fixed<<setprecision(15);
#define max3(a,b,c) max(a,max(b,c));
#define min3(a,b,c) min(a,min(b,c));
#define MOD 1000000007;
//const int dx[] = {1,-1,0,0,1,-1,1,-1};
//const int dy[] = {0,0,1,-1,1,-1,-1,1};
//const int dxhorse[] = {-2,-2,-1,-1,1,1,2,2};
//const int dyhorse[] = {1,-1,2,-2,2,-2,1,-1};
void fast()
{
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL); cout.tie(NULL);
}
int main() {
	int x; cin >> x;
	if (x == 1)return cout << 1 << " " << 1 << endl << 1,0;
	if (x == 2)return cout << 2 << " " << 2 << endl << 1 << " "<<2, 0;
	if (x == 3)return cout << 4 << " " << 3 << endl << 1 << " " << 2 << " " << 3, 0;
	cout << 3 << " " << 3 << endl;
	cout << 1 << " " << 2 <<" "<<3;
}

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f

#define PI acos(-1)
#define fi first
#define se second
#define lowbit(x) (x&(-x))
#define mp make_pair
#define pb push_back
#define si sizee()
#define E exp(1.0)
#define fixed cout.setf(ios::fixed)
#define fixeds(x) setprecision(x)
#define IOS ios::sync_with_stdio(false);cin.tie(0)
 using namespace std;
inline ll read(){
    char c=getchar();
    ll f=1,x=0;
    while(c<'0'||c>'9'){
        if(c=='-')
            f=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9'){
        x=(x<<1)+(x<<3)+(c^'0');
        c=getchar();
    }
    return x*f;
}
ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}//最大公因数
/*最小公倍数lcm(a,b)=a*b/gcd(a,b);
gcd(ka,kb)=k*gcd(a,b);
gcd(s/a,s/b)=s/gcd(a,b);
gcd(x^a-1,x^b-1)=x^gcd(a,b)-1;
gcd(f[a],f[b])=f[gcd(a,b)];
lcm(ka,kb)=k*lcm(a,b);
lcm(f[a],f[b])=f[lcm(a.b)];*/

int main(){
 ll a=read();
 ll n=a*2-1;
 printf("%lld %lld\n",n,a-1);
 for(int i=1;i<=a;i++){
   if(i%2==0){
    printf("2 ");
   }
   else{
    printf("1 ");
   }

 }

   return 0;

}

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<bitset>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<limits.h>
#include<ctime>
#define N 5000000
typedef long long ll;
const int inf=0x3fffffff;
const int maxn=2017;
const int mod=1000000007;
using namespace std;
inline int read()
{
    int f=1,x=0;char ch=getchar();
    while(ch>'9'||ch<'0')
    {
        if(ch=='-')
        f=-1;
        ch=getchar();
    }
    while(ch<='9'&&ch>='0')
    {
        x=(x<<3)+(x<<1)+ch-'0';
        ch=getchar();
    }
    return f*x;
}
int flag;
int main()
{
  int n=read();
  if(n%2==1)flag=1;
  cout<<n/2+flag<<" "<<2<<endl;
  cout<<1<<" "<<2;
}

#include <stdio.h>

int main()
{
	int A;

	scanf("%d", &A);
	printf("%d 2\n1 2\n", 2 * A - 2);

	return 0;
}

#include <iostream>
using namespace std;
#define ll long long int

int main(){
	int n;
	cin>>n;
	cout<<2*n<<" "<<2<<endl;
	cout<<1<<" "<<2;
}

#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef vector<long long> vl;
typedef pair<long long , long long > pl;
const int N=1e6+1;
#define po pop_back
#define pb push_back
#define mk make_pair
#define lw lower_bound
#define up upper_bound
#define ff first
#define ss second
#define boost ios_base::sync_with_stdio(); cin.tie(0); cout.tie(0);
#define MOD 1000000007
#define MAX 1e18
#define MIN -1e18
#define rep(i,a,b) for(ll i=a;i<=b;i++)
#define per(i,a,b) for(ll i=a;i>=b;i--)
#define con continue
#define freopen freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);
#define PI 3.14159265358979323846264338327950288419716939937510582097494459230781640628
typedef tree<ll , null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;
//template< typename T>
//using indexed_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
ll ans,mid,mn,mx,cnt,m,T,sum,h1,h2,a,b,c[1234567],d[1234567],c1[1234][1234],n,k,i,j,l,x,y,r;
bool used[10000005];
ll dp[1234567];
string s,s1[1234567];
map<ll,ll> mp;
vl v[1234567];
vl v1,vec;
int main(){
    cin>>n;
    cout<<(n-1)*2<<" "<<2<<'\n';
    cout<<"2 1";
}

#include<bits/stdc++.h>
#define loop(i,a,b) for(int i=a;i<b;i++)
#define loopb(i,a,b) for(int i=a;i>=b;i--)
#define loopm(i,a,b,step) for(int i=a;i<b;i+=step)
#define loopbm(i,a,b,step) for(int i=a;i>=b;i-=step)
#define pb(a) push_back(a)
#define mp(a,b) make_pair(a,b)
#define init(arr,val) memset(arr,val,sizeof(arr))
#define INF 1000000007
#define MOD 1000000007
#define BINF 1000000000000000001
#define int long long int
#define double long double

using namespace std;

#undef int
int main()
{
#define int long long int
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int a;
    cin>>a;
    int x=2*(a-1);
    cout<<x<<" "<<2<<endl;
    cout<<1<<" "<<2;

    return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main(){

	long long A; cin >> A;

	// vector < vector <long long> > dp(200, vector <long long> (10));

	vector <long long> m = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512};
	// for(long long i = 0; i < 10; i++){
	// 	for(long long j = 0; j < 10; j++)
	// 		dp[m[i]][j] = 1;
	// }
	// for(long long j = 0; j < 10; j++){
	// 	for(long long i = 0; i <= j; i++){
	// 		dp[m[i]][j] = 1;
	// 	}
	// }

	for(long long i = 0; i < (1 << 10); i++){
		bitset <10> x(i);
		vector <long long> temp;
		for(long long j = 0; j < 10; j++){
			if(x[j]){
				temp.emplace_back(m[j]);
			}
		}

		vector <unordered_map <long long, long long> > dp(1e3 + 25, unordered_map <long long, long long>());
		for(long long e : temp){
			dp[e][e] = 1;
		}

		for(long long c = 0; c < dp.size(); c++){
			for(int k = 0; k < temp.size(); k++){
				for(int l = k; l < temp.size(); l++){
					if(c - temp[k] >= 0){
						dp[c][temp[k]] += dp[c - temp[k]][temp[l]];
					}
				}
			}
			long long sum = 0;
			for(auto it : dp[c]) sum += it.second;
			if(sum == A){
				cout << c << " " << temp.size() << endl;
				for(long long e : temp){
					cout << e << " ";
				}
				cout << endl;
				return 0;
			}
		}
	}

	// for(long long j = 0; j < 10; j++){
	// 	for(long long i = 0; i < dp.size(); i++){
	// 		for(long long c = 0; c <= j; c++){
	// 			if(i - m[c] >= 0){
	// 				dp[i][j] += dp[i - m[c]][j];
	// 			}
	// 		}
	// 		if(dp[i][j] == A){
	// 			cout << i << " " << j + 1 << endl;
	// 			for(long long k = 0; k <=j; k++){
	// 				cout << m[k];
	// 			}
	// 			cout << endl;
	// 			return 0;
	// 		}
	// 	}
	// }

	// for(long long i = 0; i < dp.size(); i++){
	// 	cout << dp[i][3] << " ";
	// }
	// cout << endl;

	m = {1, 2, 3, 5, 7, 11, 13, 17, 19, 23};

	for(long long i = 0; i < (1 << 10); i++){
		bitset <10> x(i);
		vector <long long> temp;
		for(long long j = 0; j < 10; j++){
			if(x[j]){
				temp.emplace_back(m[j]);
			}
		}

		vector <unordered_map <long long, long long> > dp(1e3 + 25, unordered_map <long long, long long>());
		for(long long e : temp){
			dp[e][e] = 1;
		}

		for(long long c = 0; c < dp.size(); c++){
			for(int k = 0; k < temp.size(); k++){
				for(int l = k; l < temp.size(); l++){
					if(c - temp[k] >= 0){
						dp[c][temp[k]] += dp[c - temp[k]][temp[l]];
					}
				}
			}
			long long sum = 0;
			for(auto it : dp[c]) sum += it.second;
			if(sum == A){
				cout << c << " " << temp.size() << endl;
				for(long long e : temp){
					cout << e << " ";
				}
				cout << endl;
				return 0;
			}
		}
	}

	return 0;
}

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int a;
  cin >> a;
  cout << a * 2 << ' ' << 2 << endl;
  cout << 1 << ' ' << 2 << endl;
  return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    int res;
    cin >> res;
    res--;
    cout << 1000000 << " ";
    vector <int> ans;
    ans.push_back(1);
    for(int i = 2 ; i <= 1000000 ; i++)
        if(1000000/i <= res) res -= 1000000/i, ans.push_back(i);
    cout << ans.size() << endl;
    for(int i : ans) cout << i << " ";
    cout << endl;
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5, INF = 1e9;
int dp[15][maxn], p[20];
int main() {
	int a; scanf("%d",&a);
	p[1] = 1;
	for(int i=2;i<=10;i++) {
		p[i] = 2*p[i-1];
	}
	for(int i=1;i<=10;i++) {
		dp[i][p[i]] = 1;
		for(int j=0;j<maxn-2000;j++) {
			if(dp[i][j]>INF) dp[i][j] = INF;
			if(dp[i][j]) dp[i][j+p[i]] = dp[i][j] + 1;
		}
	}
	int ans=0;
	for(int i=1;i<maxn/2;i++) {
		if(dp[10][i]==a) {
			ans = i; break;
		}
	}
	printf("%d 10\n",ans);
	for(int i=1;i<=10;i++) {
		printf("%d ",p[i]);
	}
}

#include <iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    cout << (n-1)*2 <<" "<<2<<endl<<1<<" "<<2;
    return 0;
}

#include<bits/stdc++.h>
using namespace std;

//defines...
#define ll long long
#define tata return;
#define pb push_back
#define mp make_pair
#define in insert
#define run ios_base::sync_with_stdio(false);cin.tie(NULL);
#define yes cout<<"YES"<<endl;
#define no cout<<"NO"<<endl;
#define vec vector<ll>
#define setl set<ll>
#define mapl map<ll,ll>
#define shunno cout<<0<<endl;

//typedefs...
typedef pair<ll,ll>pii;

//const..
const ll fx[]={0,1,0,-1};
const ll fy[]={1,0,-1,0};
const ll mod=1e9+7;
/*ll ncr(ll n, ll k)
{
    ll res = 1;

    if (k > n - k)
        k = n - k;

    for (int i = 0; i < k; ++i) {
        res *= (n - i);
        res /= (i + 1);
    }

    return res;
}
*/

void oka()
{
    ll n;
    cin>>n;

    cout<<10000000<<" "<<n<<endl;
     n=10000000-n+1;
     cout<<1<<" ";
     for(ll i=n;i<=10000000;i++)
        cout<<i<<" ";
}
/*Tomra kew ki dite paro premikar valobasha?????*/
int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);

    run

    oka();
}

#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
#include <queue>
#include <cstdio>
#include <map>
#include <set>
#include <utility>
#include <stack>
#include <cstring>
#include <cmath>
#include <vector>
#include <ctime>
#include <bitset>
using namespace std;
#define pb push_back
#define sd(n) scanf("%d",&n)
#define sdd(n,m) scanf("%d%d",&n,&m)
#define sddd(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define sld(n) scanf("%lld",&n)
#define sldd(n,m) scanf("%lld%lld",&n,&m)
#define slddd(n,m,k) scanf("%lld%lld%lld",&n,&m,&k)
#define sf(n) scanf("%lf",&n)
#define sff(n,m) scanf("%lf%lf",&n,&m)
#define sfff(n,m,k) scanf("%lf%lf%lf",&n,&m,&k)
#define ss(str) scanf("%s",str)
#define ans() printf("%d",ans)
#define ansn() printf("%d\n",ans)
#define anss() printf("%d ",ans)
#define lans() printf("%lld",ans)
#define lanss() printf("%lld ",ans)
#define lansn() printf("%lld\n",ans)
#define fansn() printf("%.10f\n",ans)
#define r0(i,n) for(int i=0;i<(n);++i)
#define r1(i,e) for(int i=1;i<=e;++i)
#define rn(i,e) for(int i=e;i>=1;--i)
#define rsz(i,v) for(int i=0;i<(int)v.size();++i)
#define szz(x) ((int)x.size())
#define mst(abc,bca) memset(abc,bca,sizeof abc)
#define lowbit(a) (a&(-a))
#define all(a) a.begin(),a.end()
#define pii pair<int,int>
#define pli pair<ll,int>
#define mp make_pair
#define lrt rt<<1
#define rrt rt<<1|1
#define X first
#define Y second
#define PI (acos(-1.0))
#define sqr(a) ((a)*(a))
typedef long long ll;
typedef unsigned long long ull;
const ll mod = 1000000000+7;
const double eps=1e-9;
const int inf=0x3f3f3f3f;
const ll infl = 10000000000000000;
const int maxn=  3000+10;
const int maxm = 100+10;
//Pretests passed
int in(int &ret)
{
    char c;
    int sgn ;
    if(c=getchar(),c==EOF)return -1;
    while(c!='-'&&(c<'0'||c>'9'))c=getchar();
    sgn = (c=='-')?-1:1;
    ret = (c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9')ret = ret*10+(c-'0');
    ret *=sgn;
    return 1;
}

int main()
{
#ifdef LOCAL
    freopen("input.txt","r",stdin);
//    freopen("output.txt","w",stdout);
#endif // LOCAL

    int n;
    sd(n);
    n<<=1;
    --n;
    printf("%d %d",n,2);
    puts("2 1");

    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int n;
vector<int>vec;
int main()
{
	ios::sync_with_stdio(0);
	ios_base::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);

	cin >> n;
	n++;
	for (int i = 1;i <= n - i;i++)
	{
		vec.push_back(i);
		if (2*i != n )
		{
			vec.push_back(n - i);
		}
	}
	sort(vec.begin(), vec.end());
	cout << n << " " << vec.size() << endl;
	for (auto i : vec)
	{
		cout << i << " ";
	}
		return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include<sstream>
#include<iomanip>
#include<cmath>
#include<complex>
#include<cstring>
#include<string>
#include<algorithm>
#include<assert.h>
#include<vector>
#include<stack>
#include <utility>
#include<set>
#include<bitset>
#include<queue>
#include<map>
#include<valarray>
#include<numeric>
using namespace std;
const int OO = 1 << 24;
const double PI = acos(-1.0);
const double EPS = (1e-9);
typedef long long ll;
typedef complex<double> point;
#define all(v) ((v).begin()),((v).end())
#define rep(i,n) for(int(i)=0;(i)<(int)n;(i)++)
#define clr(v,idx) memset(v,idx,sizeof(v));
#define vi vector<int>
#define vll vector<ll>
#define vs vector<string>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pis pair<int,string>
#define scl(x) scanf("%lld",&x)
#define sc(x)  scanf("%d",&x)
# define mark  cout << fixed<<setprecision(15);
#define max3(a,b,c) max(a,max(b,c));
#define min3(a,b,c) min(a,min(b,c));
#define MOD 1000000007;
//const int dx[] = {1,-1,0,0,1,-1,1,-1};
//const int dy[] = {0,0,1,-1,1,-1,-1,1};
//const int dxhorse[] = {-2,-2,-1,-1,1,1,2,2};
//const int dyhorse[] = {1,-1,2,-2,2,-2,1,-1};
void fast()
{
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL); cout.tie(NULL);
}
int main() {
	int x; cin >> x;
	if (x == 1)return cout << 1 << " " << 1 << endl << 1,0;
	cout << 2 << " " << 2 << endl;
	cout << 1 << " " << 2 ;
}

#include <iostream>
using namespace std;
int main(){
long n;
cin>>n;
cout<<2*n-1<<"2\n 1 2";
}

#include <bits/stdc++.h>
using namespace std;
int n;

int main() {
    scanf("%d",&n);
    printf("%d %d\n1 2\n",n*2,2);
    return 0;
}

#include<cstdio>

int n;

int main() {
    scanf("%d",&n);
    if(n == 1)
        printf("1 1\n1");
    else {
        printf("%d %d",n << 1 ,2);
        printf("1 2");
    }
}

//#include <bits/stdc++.h>
#include <iostream>
#include <climits>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include<math.h>
#include <set>
#include <time.h>
#include <map>
#include <fstream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <algorithm>
#include <array>
#include <bitset>
#include <complex>
#include <numeric>
#include <unordered_map>
using namespace std;
#define sz(a) int((a).size())
#define ll long long
#define pb push_back
#define ld long double
#define mp make_pair
#define vi vector<ll>
#define all(c) (c).begin(),(c).end()
#define allr(c) (c).rbegin(),(c).rend()
#define For(i,n) for(ll i=0;i<n;i++)
#define cpresent(c,x) (find(all(c),x) != (c).end())
#define input(a,n) for(long long i=0;i<n;i++)cin>>a[i]
#define output(a,n) for(long long i=0;i<n;i++)cout<<a[i]<<" "
#define max3(a,b,c) max(max(a,b),c)
#define max4(a,b,c,d) max(max3(a,b,c),d)
#define min3(a,b,c) min(min(a,b),c)
#define min4(a,b,c,d) min(min3(a,b,c),d)
#define ep 1e-10
bool sortbysec(const pair<int,int> &a,const pair<int,int> &b)
{
    return (a.second < b.second);
}
ll gcd(ll a,ll b)
{
    if (b == 0)
        return a;
    return gcd(b, a % b);
}
ll lcm(ll a,ll b)
{
    return (a*b)/gcd(a,b);
}
ll pow2(ll n)
{
    ll x=1;
    for(ll i=1;i<=n;i++)
    {
        x*=2;
    }
    return x;
}
int main()
{
    cin.tie(0);cout.tie(0);
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    // let the coding escapade begins...

    ll n;
    cin>>n;
    cout<<2*(n-1)<<" 2"<<endl;
    cout<<"1 2"<<endl;
}

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string.h>

using namespace std;

const int MOD = (1e9+7);
typedef long long ll;

#define pb push_back
#define mp make_pair

int main()
{
    int n; cin >> n;
    cout << 2*n-1 << " " << n << endl;
    cout << 2 << " " << 1 << endl;
}

#include<bits/stdc++.h>
using namespace std;
int a;
int main()
{
        //freopen("876B.inp","r",stdin);
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
        cin>>a;
        cout<<1e6<<" ";
        if (a==1)
        {
                cout<<2<<"\n";
                cout<<1<<" "<<1e6-1;
                return 0;
        }
        cout<<3<<"\n";
        cout<<1<<" "<<1e6-a<<" "<<1e6-1;
        return 0;
}

#include <bits/stdc++.h>
#define int long long
#define f(i, x, y) for(int i = x; i < y; i++)
#define mp make_pair
#define pb push_back
using namespace std;

const int size = 10001;

main()
{
    int n;
    cin>>n;
    int arr[] = {0, 2, 11, 59, 307, 1511};

    int dp[size][6], look[size][6];
    f(i, 0, size)
        f(j, 0, 6)
            dp[i][j] = 0;
    memset(look, -1, sizeof(look));
    f(i, 0, 6)
        dp[0][i] = 1;

    for(int i = 1; i < size; i++)
    {
        for(int j = 1; j <= 5; j++)
        {
            dp[i][j] = dp[i][j-1];
            if(arr[j] <= i && dp[i-arr[j]][j] > 0)
            {
                look[i][j] = arr[j];
                dp[i][j] += dp[i-arr[j]][j];
            }
        }
    }
//    cout<<dp[6][2]<<" ";
    set<int> s;
    int ti = -1, tj = -1;
    f(i, 1, size)
    {
        f(j, 1, 6)
        {
            if(dp[i][j] == n)
            {
               ti = i; tj = j; break;
            }
        }
        if(ti != -1)
            break;
    }
    if(ti == -1)
    {
        cout<<"NO";
        return 0;
    }
    int i = ti, j = tj;
    int sum = i;
    while(i > 0)
    {
        if(look[i][j] == -1)
            j--;
        else
        {
            i -= arr[j];
            s.insert(arr[j]);
        }
    }
    cout<<sum<<" "<<s.size()<<"\n";
    for(int k : s)
        cout<<k<<" ";
}

#include "bits/stdc++.h"

using namespace std;
#define ll long long int

int main(){
     ll n;
     cin>>n;
    if(n==1){
        cout<<"1 1 \n1";
        return 0;
    }
    else{
        cout<<n*n-1<<" "<<2<<"\n"<<1<<" "<<n;
    }
	return 0;
}

#include <iostream>
#include <cstdio>
#define NMax 100001
#define f cin
#define g cout
using namespace std;

int n;

int main()
{
    f >> n;
    g << 2*n - 2 << " 2\n1 2";
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main(){
	int A;
	cin >> A;
	cout << 2 * (A - 1) << " " << "2\n1 2";
 }

#include <bits/stdc++.h>
#define FI(n) for(int i = 0; i < n; ++i)
#define FJ(n) for(int j = 0; j < n; ++j)
#define INT_MAX 2147483647
#define l first
#define r second
#define mp make_pair
#define pb push_back
using namespace std;
ofstream coutf;
ifstream cinf;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int MOD=1000000007;
int solve()
{
    int a;
    cin>>a;
    cout<<a+1<<" 3"<<endl<<"1 2 5";
    return 0;
}
int main()
{

    coutf.open("output.txt");
    cinf.open("input.txt");
    solve();
    cinf.close();
    coutf.close();
    return 0;
}

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<stack>
#include<queue>
#include<deque>
#include<vector>
#include<map>
#include<set>
#include<bitset>
#include<ctime>
#include<limits>
#include<iomanip>
#include<cstdlib>
#include<list>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>

typedef long long ll;
using namespace std;

#define MAXIMUM ( 1 << 31 ) - 1
#define MINIMUM ( 1 << 31 )
#define pb push_back
#define endl '\n'
#define mt make_tuple
#define eb emplace_back
#define error(args...) { vector<string> _v = split(#args, ','); err(_v.begin(), args); }

vector<string> split(const string& s, char c) {
    vector<string> v;
    stringstream ss(s);
    string x;
    while (getline(ss, x, c))
        v.emplace_back(x);
    return move(v);
}

void err(vector<string>::iterator it) {}
template<typename T, typename... Args>
void err(vector<string>::iterator it, T a, Args... args) {
    cerr << it -> substr((*it)[0] == ' ', it -> length()) << " = " << a << '\n';
    err(++it, args...);
}

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

    int n = (a - 1) * 2;
    cout << n << " " << 2 << endl << 1 << " " << 2 << endl;
    return 0;
}

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
struct mystruct{
  long long v;
  mystruct * next;
};
int structcmp(const void *v1,const void *v2){return ((mystruct *)v1)->v - ((mystruct *)v2)->v;}
int intcmp(const void *v1,const void *v2){return *(int *)v1-*(int *)v2;}
long long minn(long long v1,long long v2){return v1<v2?v1:v2;}
long long maxx(long long v1,long long v2){return v1>v2?v1:v2;}

int er[20]={0};

int cost[20][100010]={0};

int rescnt = 0;
int res_v = -1;

void init(int findv){
  int i;
  er[0]=1;
  for(i=1;i<12;i++){
    er[i]=er[i-1]*2;
  }
  for(i=0;i<=100000;i++)
    cost[0][i]= 1;

  for(rescnt = 1;rescnt<=10;rescnt++){
    int der=er[rescnt];
    for(i=1;i<der;i++){
      cost[rescnt][i] = cost[rescnt-1][i];
    }
    cost[rescnt][i] = cost[rescnt-1][i] + 1;

    if(cost[rescnt][i] == findv){
      res_v = i;
      return ;
    }
    for(i=der+1;i<=100000;i++){
      cost[rescnt][i] = cost[rescnt-1][i] + cost[rescnt][i - der];
      if(cost[rescnt][i] == findv){
        res_v = i;
        return ;
      }else if(cost[rescnt][i] > findv)
        break;
    }
  }
}
int main(){
  int i;
  int n;
  cin>>n;
  if(n == 1){
    cout<<1<<" "<<1<<endl;
    cout<<1<<endl;
    return 0;
  }
  init(n);

  cout<<res_v<<" "<<rescnt+1<<endl;
  cout<<er[0];
  for(i=1;i<rescnt;i++)
    cout<<" "<<er[i];
  cout<<endl;
  return 0;
}

#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <queue>
#include <list>
#include <algorithm>
#include <cmath>
#include <ctime>
#include <iomanip>

using namespace std;

typedef long long int ll;

int main() {
	int n;
	cin >> n;
	if (n == 1) {
		cout << 1 << 1 << endl << 1 << endl;
	}
	else {
		cout << (n - 1) * 2;
		cout <<" " << 2;
		cout << endl;
		cout << 1 << " " << 2 << endl;
	}

	return 0;
}

#include <bits/stdc++.h>
using namespace std ;

int n , m ;
int a ;

int main()
{

cin>>a ;
cout << (a-1)*2 << " "<< 2 << endl ;
cout << 1 << " " << 2 << endl ;
return 0 ;
}

#include<bits/stdc++.h>
#define debug cout<<"aaa"<<endl
#define d(a) cout<<a<<endl
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))
#define LL long long
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define MIN_INT (-2147483647-1)
#define MAX_INT 2147483647
#define MAX_LL 9223372036854775807i64
#define MIN_LL (-9223372036854775807i64-1)
using namespace std;

const int N = 1000000 + 5;
const int mod = 1000000000 + 7;
const double eps = 1e-8;
int dp[N];

int main(){
	int num,ans,cnt;
	dp[0]=1;//初始化
	cin>>num;
	for(int i=1;i<10;i++){
		for(int j=0;j<N;j++){
			if(j>=i){
				dp[j]+=dp[j-i];
			}
			if(dp[j]==num){
				ans=j;
				cnt=i;
				break;
			}
		}
	}
	cout<<ans<<" "<<cnt<<endl;
	for(int i=1;i<=cnt;i++){
		cout<<i<<" ";
	}
	return 0;
}

#include <bits/stdc++.h>
#define mem( a , b ) memset( a , b , sizeof(a) )
using namespace std;
int _I(){ int x ; scanf("%d",&x); return x; }
struct node
{
        int a , b;
        node(){};
        node( int x , int y )
        {
                a = x;
                b = y;
        }
};
int ar[ 100001 ];
int _find( int n )
{
        if( ar[ n ] == n ) return n;
        return ar[ n ] = _find( ar[ n ] );
}
void makefriend( int a , int b )
{
        int p = _find( a );
        int q = _find( b );
        if( p != q )
        {
                ar[ p ] = q;
        }
}
void solve()
{
        int n = _I();
        if( n == 1 )
        {
                printf("1 1\n1");
        }
        printf("%d 2\n1 2\n",2*(n-1) );
}
int main()
{
        //freopen("input.txt","r",stdin);
        //freopen("output.txt","w",stdout);
        //int t = _I();
        //calender();
        //while( t-- ){
                solve();
        //}
	return 0;
}

#include <iostream>
#include <set>
#include <map>
#include <vector>
#include <utility>
#include <algorithm>
#include <limits.h>
using namespace std;
typedef long long int ll;
typedef vector<int> vint;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef tuple<ll, ll, ll> tt;

int main() {
    int a;
    cin >> a;
    if (a == 1) {
        cout << 1 << " " << 1 << endl << 1 << endl;
    } else {
        //cout << a * 2 - 1 << " " << 2 << endl << 1 << " " << 2 << endl;
        a /= 2;
        a *= 2;
        a *= 2;
        a -= 1;
        cout << a << " " << 2 << endl << 1 << " " << 2 << endl;
    }
}

#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
	cin>>n;
	printf("%d 2\n1 2\n",2*(n-1));
	return 0;
}

#include <iostream>
#include <iomanip>
#include <vector>
#include <cmath>
#include <algorithm>
#include <stack>

using namespace std;

int main() {
    int n;
    cin >> n;
    cout << (n - 1) * 2 << " " << 2 << endl;
    cout << 1 << " " << 2 << endl;
}

#pragma region Template

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#pragma comment(linker, "/STACK:67108864")
#endif

#include <algorithm>
#include <bitset>
#include <cassert>
#include <cinttypes>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <valarray>
#include <vector>

using namespace std;

#define all(x) (x).begin(), (x).end()
#define mp make_pair
#define pb push_back
#define sz(x) (int)(x).size()
#define fst first
#define snd second

#ifdef DEBUG
#define eprintf(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)
#define eputs(s) eprintf("%s\n", (s))
#else
#define eprintf(...) ((void)0)
#define eputs(s) ((void)0)
#endif

mt19937 gen(random_device{}());

typedef long long ll;
typedef long double ld;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef complex<double> cd;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int INF = (int)1.01e9;
const int MOD = 1000000007;
const double EPS = 1e-9;
const double PI = acos(-1);

#pragma endregion

// #define FNAME ""

bool solve()
{
    int a;
    if (scanf("%d", &a) < 1)
        return false;

    printf("%d 2\n1 2\n", 2 * (a - 1));

    return true;
}

int main()
{
#ifdef FNAME
    assert(freopen(FNAME ".in", "r", stdin));
    freopen(FNAME ".out", "w", stdout);
#endif

    while (solve()) {
        eprintf("Time: %.3f\n", (double)clock() / CLOCKS_PER_SEC);
    }

    return 0;
}

#include<bits/stdc++.h>

using namespace std;
#define ll long long
#define ld long double
#define pii pair<ll,ll>
#define fi first
#define se second
#define pb push_back
#define arr vector<ll>
const ll maxn=1e5+1,msiz=2,mod=1e9+7,inf=1e18;

int main()
{
    //freopen("ss.inp","r",stdin);
    ios::sync_with_stdio(false);
    cin.tie(0);
    int a;
    cin>>a;
    cout<<(a-1)*2<<" "<<2<<endl<<1<<" "<<2;
    return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include<sstream>
#include<iomanip>
#include<cmath>
#include<complex>
#include<cstring>
#include<string>
#include<algorithm>
#include<assert.h>
#include<vector>
#include<stack>
#include <utility>
#include<set>
#include<bitset>
#include<queue>
#include<map>
#include<valarray>
#include<numeric>
using namespace std;
const int OO = 1 << 24;
const double PI = acos(-1.0);
const double EPS = (1e-9);
typedef long long ll;
typedef complex<double> point;
#define all(v) ((v).begin()),((v).end())
#define rep(i,n) for(int(i)=0;(i)<(int)n;(i)++)
#define clr(v,idx) memset(v,idx,sizeof(v));
#define vi vector<int>
#define vll vector<ll>
#define vs vector<string>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pis pair<int,string>
#define scl(x) scanf("%lld",&x)
#define sc(x)  scanf("%d",&x)
# define mark  cout << fixed<<setprecision(15);
#define max3(a,b,c) max(a,max(b,c));
#define min3(a,b,c) min(a,min(b,c));
#define MOD 1000000007;
//const int dx[] = {1,-1,0,0,1,-1,1,-1};
//const int dy[] = {0,0,1,-1,1,-1,-1,1};
//const int dxhorse[] = {-2,-2,-1,-1,1,1,2,2};
//const int dyhorse[] = {1,-1,2,-2,2,-2,1,-1};
void fast()
{
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL); cout.tie(NULL);
}
int main() {
	int x; cin >> x;
	cout << x << " " << 3;
	cout << 1 << " " << 2 << " " << 3;
}

#include <iostream>
using namespace std;
int main(){
long n;
cin>>n;
cout<<2*n-1<<"2\n 1 2";
}

#include<iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    cout << (n - 1) * 2 << " " << 2 << endl << 1 << " " << 2;
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int hsh[100001];
int main(){
	int m;
	cin >> m;
	int ct = 0;
	int times = 0;
	while(ct <= 100000 && times <= 20000){
	  int n;
	  n = 1000;
	  int arr[10];
	  for(int i = 1 ; i <= 10 ; ++i )
	  	arr[i- 1] = rand() % 50 + 1;
	  int table[n + 1];
	  memset(table, 0, sizeof table);
	  table[0] = 1;
	  for(int j = 0 ; j < 10 ; ++j){
	  	for(int i = arr[j] ; i <= n ; ++i ){
	  		 table[i] += table[i - arr[j]];
	  		 if(table[i] > 1e5)
	  		 	table[i] = 100000 + 1;
	  		 if(table[i] == m){
	  		 	cout << i << endl;
	  		 	set < int > s;
	  		 	for(int k = 0 ; k <= j; ++k )
	  		 		s.insert(arr[k]);
	  		 	cout << s.size() << endl;
	  		 	for(set< int > :: iterator it = s.begin() ; it != s.end(); ++it)
	  		 	cout << *it <<" ";
	  		 	return 0;
	  		 }
	  		}
	  }

	  for(int i = 1 ; i <= n ; ++i ){
	  	if(table[i] <= 100000 && table[i] >= 1){
	  		if(!hsh[table[i]]){
	  			++ct;
	  			hsh[table[i]] = 1;
	  		}
	  	}
	  }
	  ++times;
	}

}

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int a;
    cin>>a;

    cout<<a-2<<" "<<2<<endl;
    cout<<1<<" "<<2;

}

#include<bits/stdc++.h>
using namespace std;
int main (){
	long long n;
	cin>>n;
	cout<<(2*n)-1<<2<<"\n"<<1<<' '<<2;
}

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <fstream>
#include <string.h>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <queue>
#define inf 1000*1000*1000
#define mod 1000000007
#define ff first
#define ss second
#define mp  make_pair
using namespace std;
int n;
int main()
{
    cin>>n;
    cout<<2*(n-1)<<" "<<2<<endl<<"2 1";
}

#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <cassert>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cmath>
#include <functional>
#include <utility>

#define pb push_back
#define all(x) (x).begin(), (x).end()
#define eprintf(...) fprintf(stderr,__VA_ARGS__)

using namespace std;

template<class T> inline void umax(T &a,T b){if(a < b) a = b;}
template<class T> inline void umin(T &a,T b){if(a > b) a = b;}
template<class T> inline T abs(T a){return a > 0 ? a : -a;}

typedef long long ll;
typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;

const int inf = 1e9 + 143;
const ll longinf = 1e18 + 143;

inline int read(){int x;scanf(" %d",&x);return x;}

int main() {
    int a = read();
    printf("%d 2\n", a * 2 - 2);
    printf("1 2\n");
    return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main(){
    int a;
    cin >> a;
    cout << (a-1)*2 << ' ' << 2 << endl;
    cout << 1 << ' ' << 2 << endl;
}

/*
 * created   : 2019-08-04 09:46:54
 * accepted  : 2019-08-04 10:11:00
 * author    : landcold7
 */
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
#ifndef LOCAL
#define trace(...)
#endif
typedef long long ll;

void solve() {
  vector<int> coin = {1, 2};
  auto ways = [&](int x) {
    vector<int> dp(x + 1);
    dp[0] = 1;
    for (auto c : coin) {
      for (int money = c; money <= x; money++) {
        dp[money] += dp[money - c];
      }
    }
    return dp[x];
  };
  int n;
  cin >> n;
  for (int i = 0; i < 10000; i++) {
    if (ways(i) == n) {
      cout << i << " " << 2 << "\n";
      for (int j = 0; j < 2; j++) {
        cout << coin[j] << (j == 3 ? "\n" : " ");
      }
      return;
    }
  }
}

int main() {
  ios_base::sync_with_stdio(0); cin.tie(0);
  solve();
  return 0;
}

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int n,i,ans1,ans2;
string s;
int main(){
    cin >> n;
    if(n == 1){cout << 1; return 0;}
    cout << (n - 1)*2 << " " << 2 << endl;
    cout << 1 << " " << 2;
    return 0;
}

#define _USE_MATH_DEFINES
#include <cassert>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <queue>
#include <stack>
#include <list>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <algorithm>
#include <complex>
#include <cmath>
#include <numeric>
#include <bitset>

using namespace std;

#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
  cerr << name << ": " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << ": " << arg1 << " |";
  __f(comma + 1, args...);
}

typedef long long int64;
typedef pair<int, int> ii;
const int INF = 1 << 30;
const int MOD = 1e9 + 7;

int main() {
  int n;
  scanf("%d", &n);
  printf("%d 2\n", (n - 1) * 2);
  printf("1 2\n");
  return 0;
}

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;

int main(){
	int n;
	scanf("%d", &n);
	printf("%d 2\n1 2",(n-1)*2);

	return 0;
}

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdio>
#include <map>

using namespace std;
#define mem(a, b) memset(a, b, sizeof(a))
#define PI acos(-1)
#define DEBUG(a) cout << (a) << endl
typedef long long ll;
char dir8[8][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
char dir4[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};
const int INF = 0x3f3f3f3fLL;
const long long LLF = 0x3f3f3f3f3f3f3f3fLL;
const int MAXn = 1e5 + 15;
const int mod = 1e9 + 7;
//priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;

int main()
{
    int n;
    cin>>n;
    cout<<(n-1)*2<<" "<<2<<endl;
    cout<<1<<" "<<2<<endl;
    return 0;
}

#include <iostream>
#include <set>
#include <map>
#include <vector>
#include <utility>
#include <algorithm>
#include <limits.h>
using namespace std;
typedef long long int ll;
typedef vector<int> vint;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef tuple<ll, ll, ll> tt;

int main() {
    int a;
    cin >> a;
    if (a == 1) {
        cout << 1 << " " << 1 << endl << 1 << endl;
    } else {
        //cout << a * 2 - 1 << " " << 2 << endl << 1 << " " << 2 << endl;
        a /= 2;
        a *= 2;
        a -= 2;
        cout << a << " " << 2 << endl << 1 << " " << 2 << endl;
    }
}

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int n;
	scanf("%d",&n);
	printf("%d%d\n",max(1,2*n-2), 2);
	printf("1 2\n");
	return 0;
}

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	cout<<(n-1)*2<<' '<<'2'<<endl;
	cout<<'1'<<' '<<'2'<<endl;

}

#include<bits/stdc++.h>
using namespace std;
long  long a[100009];
int main()
{
    long long i,j,k,l,c,v,b,n,m;
    cin>>n;

    cout<<n+n-4<<" "<<"3"<<endl;
    cout<<"1 2 3"<<endl;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{
	int a;
	cin >> a;
	cout << 2 * a << ' ' << 2 << '\n' << 1 << ' ' << 2;
	return 0;
}

#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int MAX = 1e5 + 111;

int n;

int main() {
#ifdef LOCAL
    freopen("xxx.in", "r", stdin);
    freopen("xxx.out", "w", stdout);
#endif
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int a;
    cin >> a;
    cout << 2 * a + 1 << " " << 2 << "\n";
    cout << "1 2\n";
    return 0;
}

#include<bits/stdc++.h>
using namespace std;

int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
//ifstream cin ("input.txt");
//ofstream cout ("output.txt");

int n;
cin>>n;
int k=(n-1)*2;
cout<<k<<' '<<2<<'\n';
cout<<1<<' '<<2;
}

#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
//using namespace __gnu_pbds;

#define endl '\n'
#define pb push_back
#define ff first
#define ss second
#define forn(i, n) for (int i = 0; i < n; i++)
typedef pair<int, int> pi;
typedef long long ll;
//typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;

int A;

int main() {
    //ios_base::sync_with_stdio(false); cin.tie(NULL);
    if (fopen("test.in", "r")) {
        freopen ("test.in", "r", stdin);
        //freopen ("test.out", "w", stdout);
    } cin >> A;
    cout << 2*(A-1) << " " << 2 << endl;
    cout << 1 << " " << 2 << endl;

    return 0;
}

/*input
3

*/
#include <bits/stdc++.h>

using namespace std;

int main () {
	int a;
	cin >> a;
	cout << 2 * a - 2 << " 2\n1 2";

	return 0;
}

#include <iostream>
#include <cstdio>
#define NMax 100001
#define f cin
#define g cout
using namespace std;

int n, s;

int main()
{
    f >> n;
    if(n == 1)
    {
        g << "1 1\n1";
    }
    g << 2*(n - 1) << ' ' << 2 << '\n' << 1 << ' ' << 2;
    return 0;
}

#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
#define F first
#define S second
#define make0(a) memset(a,0,sizeof(a))
#define make1(a) memset(a,-1,sizeof(a))
#define ALL(v) v.begin(),v.end()
#define allr(v) v.rbegin(),v.rend()
#define len(v) (int)v.size()
#define pi pair <int,int>
#define pll pair <ll,ll>
#define cases int t; cin >> t; while(t--)
#define fast_cin() ios_base::sync_with_stdio(0)
#define yes() cout << "yes\n"
#define no() cout << "no\n";

#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
    cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
    const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif

const int mod = 1e9+7;

int main()
{
	int A;
	cin >> A;
	cout << 2*A - 2 << ' ' << 2 << endl;
	cout << 1 << ' ' << 2 << endl;
	return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin>>n;
    cout<<n/2+1<<" "<<"2"<<endl;
    cout<<"1 "<<"2";
    return 0;
}

#include <iostream>
using namespace std;

int main(){
	int n;
	cin>>n;
	cout<<2*n-2<<" "<<2<<'\n';
	cout<<"1 2";
	return 0;
}

#include <bits/stdc++.h>

// Preparing for IOI 2018

using namespace std;

const int inf = (int) 1e9 + 7;
const int N = (int) 1e6 + 7;
const double PI = 3.141592653589793238462643;
const double eps = 0.000000001;

#define ok puts("OK");
#define ll long long
#define fr first
#define sc second
#define eb emplace_back
#define pb push_back
#define sz(s) ((int)s.size())
#define all(s) s.begin(), s.end()

vector < int > ans;
int ar[N];

inline void solve () {
    int a; scanf ("%d", &a);
    int n, m; n = m = 0;
    int q = 0;
    if (a == 1) {
        cout << 1 << ' ' << 1 << endl << 1;
        return ;
    }
    ans.pb(1); ans.pb(2);
    ar[1] = 1;
    ar[2] = 2;
    for (int i = 4; i <= N; i += 2) {
        ar[i] = ar[i - 2] + 1;
        if (ar[i] == a) {
            cout << i << ' ' << 2 << endl;
            cout << 1 << ' ' << 2;
            return ;
        }
    }

}

int test = 1;

main () {
        // freopen("example.in", "r", stdin); freopen("example.out", "w', stdout);
        // scanf ("%d", &test);
        while (test--) {
                solve();
        }
}

#include<iostream>

using namespace std;

int main( )
{
	int n;
	cin >> n;
	if(n == 18){
		printf("30 4\n1 5 10 25\n");
	}
	if(n == 3){
		printf("20 3\n5 2 30\n");
	}
}

#include <bits/stdc++.h>
using namespace std;
long a;
int main()
{
//    freopen("in.inp","r",stdin);
//    freopen("out.out","w",stdout);
    cin >> a ;
    if (a==0)
    {
        cout << 21 << " " << 1 << "\n";
        cout << 5 ;
        return  0;
    }
    cout << (a-1)*2 << " " << 2 << "\n";
    cout << 1 << " " << 2 ;
    return 0;
}

#include <queue>
#include <iostream>
#include <cmath>
#include <vector>
#include <string>
#include <algorithm>
#include <fstream>
#include <set>
#include <deque>
#include <sstream>
#include <map>
#include <iomanip>
#define sync ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define ss second
#define ff first
#define ll long long
#define mp make_pair
#define endl "\n"
#define pb push_back
#define ld long double
#define M_PI 3.14159265358979323846
#define puss vector
const ld EPS = 0.00001;
const ll INF = 1000000007;

using namespace std;
// scanf("%I64d", &x);
const ll MAXN = 100003;

int main(){
	ll n;
	cin>>n;
	if (n==1){
		cout<<1000000<<' '<<1<<endl;
		cout<<1;
		return 0;
	}
	cout<<1000000<<' '<<2<<endl;
	cout<<999999/(n-1)<<' '<<1;

}

#include<iostream>

using namespace std;

int n;

main(){
    cin >> n;
    if(n == 1)  cout << "1\n 1 1";
    else cout << n * 2  - 2 << "\n1 2";
}

#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define timesaver ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const unsigned int mod=1e9+7;

#define PI 3.14159265
typedef long long int ll;
const long long int N=1e5;

int main()
{
    timesaver;
    ll l,m,ans=1,t,n,p,q,z,w=0,b[100009],pre=1e5,mid,cnt=0,now,r=0,k,i=0,j=0,flag=0,temp=0,e=-1e4,o=0;
    cin>>n;
    if(n==1)
    { cout<<1<<" "<<1<<endl<<1; return 0;}
    cout<<n-1<<" "<<2<<endl<<1<<" "<<2;
    return 0;
}

#include <iostream>
#include <string>
#include<cmath>
using namespace std;
int main()
{
	int A;
	cin>>A;
	cout<<2*(A-1)<<' '<<"2"<<endl<<"1 2";
}

/*
codeforces.com/problemset/problem/865/A
silenceeve
*/
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int A;
	scanf("%d", &A);
	//while(scanf("%d", &A) != EOF)
	//{
		cout<<2*(A-1)<<" "<<2<<endl;
		cout<<1<<" "<<2<<endl;
	//}
	return 0;
}

#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <map>
#include <cstdlib>
#include <cmath>
#include <string>
#include <algorithm>
#include <set>
#include <stack>
#include <queue>
#include <utility>
#include <bitset>
#define fi first
#define se second
#define pb push_back
#define mkp make_pair
#define rep(i,a,b) for (int i=(a);i<(b);i++)
#define per(i,a,b) for (int i=(b)-1;i>=(a);i--)
#define REP(i,a,b) for (int i=(a);i<=(b);i++)
#define PER(i,a,b) for (int i=(b);i>=(a);i--)
#define de(x) cout<<">> "<<#x<<" = "<<x<<endl;
using namespace std;
typedef long long LL;

const int INF = 0x3f3f3f3f;
const int MAXN = 1000005; // 1e6;
int A;
int dp[MAXN];
int main()
{
//        freopen("in.txt","r",stdin);
        scanf("%d",&A);
        dp[0]=1;
        rep(k,1,3)
        rep(i,0,MAXN)
        {
                dp[i+k]+=dp[i];
        }
        int ans;
        rep(i,1,MAXN)
        {
                if (dp[i]==A)
                {
                        ans = i;

                        break;
                }
        }
        printf("%d %d\n",ans,2);
        printf("%d %d\n",1,2);
        return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin>>n;
    if(n==1)
        cout<<"1"<<" "<<"2";
    else
    {
        cout<<n*2-1<<""<<"2"<<endl;
        cout<<"1"<<" "<<"2";
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        printf("1 1\n");
        printf("1\n");
    }
    return 0;
}

#include <bits/stdc++.h>

using namespace std ;
int main()
{
   int n ,a=0,b=0,sum=0;
   cin >> n ;
   if(n==1)
   {
   	 cout << "1 1\n1";
   	 return 0 ;
   }

   for(int i=1;i<=1000000;i++)
   {
   	sum = 1 ;
   	 int aa[11] ={0} ;
   	 for(int j=2;j<=10;j++)
   	 {
   	 	if(j>i)break;
   	 	sum += i/j + aa[i%j];
   	 	aa[j] = sum ;
   	 	if(sum==n)
   	 	{
   	 		a = i ;
   	 		b = j ;
   	 		break;
			}
		}
	  if(sum==n)break;
   }
   cout << a <<" "<<b<<endl;
   for(int i=1;i<=b;i++)cout<<i<<" ";
	return 0;
}

#include <bits/stdc++.h>

using namespace std;
//C:\Users\Nurzhigit\Documents\Lab101\ACMP\ACMP
#define ll long long
#define pb push_back
#define mp make_pair
#define N 10	0100
string s,z;
ll n,k,m;
int main(){
	cin >> n;
	if(n == 1){
		cout << 1 <<endl;
	}
	else{
		cout << 2*n - 2 << "  " << 2 << endl;
		cout << 1 << " " << 2;
	}
	return 0;
}

//
//  main.cpp
//  HackerRank
//
//  Created by Mikhail ; on 12.06.17.
//  Copyright © 2017 Mikhail Kharlov. All rights reserved.
//

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <stack>
#include <map>
#include <queue>
#include <cmath>

int main(int argc, const char * argv[])
{
    int n;
    std::cin >> n;

    std::cout << 2 * n - 2 << " " << 2 << std::endl;
    std::cout << "1 2" << std::endl;

    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
cout<<3*n-1<<' '<<"2\n1 2";
}

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include<sstream>
#include<iomanip>
#include<cmath>
#include<complex>
#include<cstring>
#include<string>
#include<algorithm>
#include<assert.h>
#include<vector>
#include<stack>
#include <utility>
#include<set>
#include<bitset>
#include<queue>
#include<map>
#include<valarray>
#include<numeric>
using namespace std;
const int OO = 1 << 24;
const double PI = acos(-1.0);
const double EPS = (1e-9);
typedef long long ll;
typedef complex<double> point;
#define all(v) ((v).begin()),((v).end())
#define rep(i,n) for(int(i)=0;(i)<(int)n;(i)++)
#define clr(v,idx) memset(v,idx,sizeof(v));
#define vi vector<int>
#define vll vector<ll>
#define vs vector<string>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pis pair<int,string>
#define scl(x) scanf("%lld",&x)
#define sc(x)  scanf("%d",&x)
# define mark  cout << fixed<<setprecision(15);
#define max3(a,b,c) max(a,max(b,c));
#define min3(a,b,c) min(a,min(b,c));
#define MOD 1000000007;
//const int dx[] = {1,-1,0,0,1,-1,1,-1};
//const int dy[] = {0,0,1,-1,1,-1,-1,1};
//const int dxhorse[] = {-2,-2,-1,-1,1,1,2,2};
//const int dyhorse[] = {1,-1,2,-2,2,-2,1,-1};
void fast()
{
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL); cout.tie(NULL);
}
int main() {
	int x; cin >> x;
	cout << x << " " << 3<<endl;
	cout << 1 << " " << 2 << " " << 3;
}

#include <bits/stdc++.h>

using namespace std;

#define long long long
#define INF (long) 1e18
#define MOD 998'244'353
#define pll pair<long, long>
#define pb push_back
#define FOR(i, a, b) \
    for (long i = a; i < (long) b; i++)
#define REP(i, n) FOR(i, 0, n)
#define SORT(v, atr) \
    sort(v.begin(), v.end(), \
      [](auto &a, auto &b) { return a.atr < b.atr; });
#define UNSORT(v, atr) \
    sort(v.begin(), v.end(), \
      [](auto &a, auto &b) { return a.atr > b.atr; });
#define PRINTV(v) \
    if (not v.empty()) { \
        printf("%lld", v[0]); \
        for (long _i = 1; _i < (long) v.size(); _i++) \
            printf(" %lld", v[_i]); \
        printf("\n"); \
    }

auto gera_primos(long n)
{
  set<long> primos;
  vector<bool> crivo(n);
  primos.insert(1);
  primos.insert(2);
  for (long i = 3; i < n; i += 2) {
    if (crivo[i]) continue;
    primos.insert(i);
    for (long j = i; j < n; j += i) {
      crivo[j] = true;
    }
  }
  return primos;
}

long fat(long k, long a=1)
{
  long x = 1;
  FOR (i, a, k+1) {
    x = (x * i);
  }
  return x;
}

long solve(auto &w)
{
  if (w.size() == 2) return 0;
  long n = w.size();
  long resp, minimo = INF;
  FOR (i, 0, n - 1) {
    resp = abs(w[i] - w[i+1]);
    vector<long> a(w.begin(), w.begin() + i);
    vector<long> b(w.begin() + i + 2, w.end());
    a.insert(a.end(), b.begin(), b.end());
    resp += solve(a);
    minimo = min(minimo, resp);
  }
  return minimo;
}

int main()
{
  long a;
  cin >> a;

  printf("2 %lld\n", (a-1)*2);
  puts("1 2");
}

#include <bits/stdc++.h>

#define fir first
#define sec second
using namespace std;
typedef long long LL;
typedef unsigned long long u64;

template <typename T> inline bool cmin(T & a, const T & b) { return a > b ? a = b, 1 : 0;}
template <typename T> inline bool cmax(T & a, const T & b) { return a < b ? a = b, 1 : 0;}
int read() {
	int x = 0, f = 1;char ch;
	for(ch = getchar(); !isdigit(ch); ch = getchar())
		if(ch == '-') f = -1;
	for(; isdigit(ch); x = x * 10 + ch - '0', ch = getchar());
	return x * f;
}

int main() {
	int n;
	n = read();
	if(n == 1)
		puts("1 1");
	else
		printf("%d 2\n1 2\n", n - 1 << 1);
	return 0;
}

#include <bits/stdc++.h>

using namespace std ;
int main()
{
   int n ,a=0,b=0,sum=0;
   cin >> n ;
   if(n==1)
   {
   	 cout << "1 1\n1";
   	 return 0 ;
   }

   for(int i=1;i<=1000000;i++)
   {
   	sum = 1 ;
   	 int aa[11] ={0} ;
   	 for(int j=2;j<=10;j++)
   	 {
   	 	if(j>i)break;
   	 	sum += i/j + aa[i%j];
   	 	aa[j] = i/j+ aa[i%j] ;
   	 	if(sum==n)
   	 	{
   	 		a = i ;
   	 		b = j ;
   	 		break;
			}
		}
	  if(sum==n)break;
   }
   cout << a <<" "<<b<<endl;
   for(int i=1;i<=b;i++)cout<<i<<" ";
	return 0;
}

#include<iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    cout << (n - 1) * 2 << " " << 2 << endl << 1 << " " << 2;
    return 0;
}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 112

int N;
int main(void){
  scanf("%d",&N);
  if(N==1)printf("1\n");
  else printf("%d\n",2*(N-1));
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define M 1000000007
#define ll long long
#define pb push_back
#define F first
#define S second
#define vl vector<ll>
#define vvl vector<vl>
#define pii pair<int,int>
#define pll pair<ll,ll>

const int N=1000001;
ll dp[10][N];

int main()
{
	vector<ll> a={1,2,4,8,16,32,64,128,256,512};
	for(ll i=0;i<10;i++)
	{
		dp[i][0]=1;
	}

	for(ll i=0;i<N;i++)
	{
		dp[0][i]=1;
	}

	for(ll i=1;i<10;i++)
	{
		for(ll j=1;j<N;j++)
		{
			dp[i][j]=dp[i-1][j];
			if(j-a[i]>=0)
			{
				dp[i][j]+=dp[i][j-a[i]];
			}
		}
	}

	/*for(ll i=0;i<5;i++)
	{
		for(ll j=1;j<=10;j++)
		{
			cout << dp[i][j] << " ";
		}
		cout << endl;
	}*/

	ll nw;
	cin >> nw;

	for(ll i=0;i<10;i++)
	{
		for(ll j=1;j<=N;j++)
		{
			if(dp[i][j]==nw)
			{
				cout << j << " " << i+1 << endl;
				ll c=1;
				for(ll k=0;k<i+1;k++)
				{
					cout << c << " ";
					c*=2;
				}
				cout << endl;
				return 0;
			}

		}
	}
}

#include<iostream>
using namespace std;
int main()
{
    int a;
    cin>>a;
    cout<<(a-1)*2<<" "<<2<<"\n"<<1<<" "<<2<<"\n";
}

//#pragma GCC optimize("trapv")
#include<bits/stdc++.h>
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define pb push_back
using namespace std;
using ll = long long;
using vi = vector<ll>;
using pi = pair<ll, ll>;
using vpi = vector<pi>;
const int maxn = 5e2 + 33, mod = 998244353;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int a;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> a;
	cout << 2*a << " " << 2 << '\n';
	cout << "1 2";
}