#include <bits/stdc++.h>   using namespace std;   const int N = 105;   const int M = 505;   const int MOD = int(1e9) + 7;   const int INF = 0x3f3f3f3f;   const double EPS = 1e-9;   const double PI = acos(-1.0);   const int dx[] = {-1, 1, 0, 0};   const int dy[] = {0, 0, -1, 1};   template <class T>   inline T Min(T a, T b) {     return a < b ? a : b;   }   template <class T>   inline T Max(T a, T b) {     return a > b ? a : b;   }   template <class T>   inline T Min(T a, T b, T c) {     return min(min(a, b), c);   }   template <class T>   inline T Max(T a, T b, T c) {     return max(max(a, b), c);   }   template <class T>   inline T sqr(T a) {     return a * a;   }   template <class T>   inline T cub(T a) {     return a * a * a;   }   template <class T>   inline T gcd(T a, T b) {     return b == 0 ? a : gcd(b, a % b);   }   template <class T>   inline T lcm(T a, T b) {     return a * b / gcd(a, b);   }   int main() {     int a, b;     while (scanf( %d%d , &a, &b) != EOF) {       int i, tot = (a * (a - 1)) / 2;       if (tot <= b) {         printf( no solution n );       } else {         for (i = 0; i < a; i++) {           printf( %d %d n , 0, i);         }       }     }     return 0;   }   