Currently Tiny is learning Computational Geometry. When trying to solve a problem called "The Closest Pair Of Points In The Plane", he found that a code which gave a wrong time complexity got Accepted instead of Time Limit Exceeded.

The problem is the follows. Given *n* points in the plane, find a pair of points between which the distance is minimized. Distance between (*x*<sub class="lower-index">1</sub>, *y*<sub class="lower-index">1</sub>) and (*x*<sub class="lower-index">2</sub>, *y*<sub class="lower-index">2</sub>) is <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/a0c6a684203590998776587e7f02c93ba5771038.png" style="max-width: 100.0%;max-height: 100.0%;"/>.

The pseudo code of the unexpected code is as follows:

Here, *tot* can be regarded as the running time of the code. Due to the fact that a computer can only run a limited number of operations per second, *tot* should not be more than *k* in order not to get Time Limit Exceeded.

You are a great hacker. Would you please help Tiny generate a test data and let the code get Time Limit Exceeded?
A single line which contains two space-separated integers *n* and *k* (2 ≤ *n* ≤ 2000, 1 ≤ *k* ≤ 10<sup class="upper-index">9</sup>).
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<algorithm>
#define MAXN 2013
using namespace std;

int n, tk;
//int px[ MAXN ], py[ MAXN ];
bool sync_with_stdio( bool sync = false );

void init()
{
  cin>>n>>tk;
  return ;
}

void sol()
{
  //int del = n;
  if( n * ( n - 1 ) / 2 <= tk )
    {
      cout<<"no solution\n";
      return ;
    }
  long long tx = n * ( n + 1 ) / 2, ty = 0;
  //cout<<tx<<" "<<ty<<"\n";
  
  for( int i = n ; i > 0 ; -- i )
    {
      cout<<tx<<" "<<ty<<"\n";
      tx -= i;
      ty += ( n - i + 1 ) * 1000 ;
    }
  
  return ;
}

int main()
{
  init();
  
  sol();
  
  return 0;
}
