#include <bits/stdc++.h>
#define sz(in) in.size()
#define mp make_pair
#define pb push_back
using namespace std;

int solve(vector<int> in , int k)//
{
   assert( sz(in) >=2 );

   stack<int> st;

   st.push( 0 );

   for(int i=1;i<sz(in);i++)
   {
       int curr=in[i];

       while ( (!st.empty()) &&( in[st.top()] > curr) )
       {
         if( ( in[st.top()] + curr) >= k)
         {
             cout<<st.top()<<"  "<<i<<endl;
         }

         st.pop();
       }

       if( !st.empty())
       {
             if( ( in[st.top()] + curr) >= k)
             {
              cout<<st.top()<<"  "<<i<<endl;
             }
       }

       st.push(i);
   }

   return 0;

}


int main()
{

         int n,k;

        cin>>n>>k;

        vector<int> in(n);

        for(int i=0;i<n;i++)
             cin>>in[i];

        solve(in,k);

}