#include <bits/stdc++.h>   template <class T>   T _diff(T a, T b) {     return (a < b ? b - a : a - b);   }   template <class T>   T _abs(T a) {     return (a < 0 ? -a : a);   }   template <class T>   T _max(T a, T b) {     return (a > b ? a : b);   }   template <class T>   T _min(T a, T b) {     return (a < b ? a : b);   }   template <class T>   T max3(T a, T b, T c) {     return (_max(a, b) > c ? _max(a, b) : c);   }   template <class T>   T min3(T a, T b, T c) {     return (_min(a, b) < c ? _min(a, b) : c);   }   template <class T>   T GCD(T a, T b) {     a = _abs(a);     b = _abs(b);     T tmp;     while (a % b) {       tmp = a % b;       a = b;       b = tmp;     }     return b;   }   template <class T>   T LCM(T a, T b) {     a = _abs(a);     b = _abs(b);     return (a / GCD(a, b)) * b;   }   using namespace std;   long long n, k, mul;   int main() {     cin >> n >> k;     mul = (n * (n - 1)) / 2;     if (mul <= k)       cout <<  no solution n ;     else {       for (int i = 0; i < n; i++) {         cout << 0 <<     << i << endl;       }     }     return 0;   }   