#include<vector>
#include<iostream>
#include<string>
#include<set>
#include<sstream>
#include<map>
#include<deque>
#define pb(a) push_back(a)
using namespace std;
int main()
{
  int vlak,ciest;
  while(cin>>vlak>>ciest,vlak+ciest)
  {

    vector<deque<int> > rad(ciest+5);
    multiset<pair<int,int> > mnoz;
    int cis,maxi=-1,zle=0;
    vector<int> res;
    for (int i=0;i<vlak;i++)
    {
      cin>>cis;
      if (zle) continue;
      int zac=0,kon=ciest+2,stred;
      while(zac+1!=kon)
      {
//        cout<<zac<<" "<<kon<<endl;
        stred=(zac+kon)/2;
        if (rad[stred].size()==0||rad[stred].back()<=cis)
          kon=stred;
        else
          zac=stred;      
      }
      if (rad[zac].size()==0||rad[zac].back()<=cis)
        stred=zac;
      else
        stred=kon;                
      if (stred>=ciest)
      {
        zle=1;        
        
      }    
      rad[stred].push_back(cis);
      maxi>?=stred;
      if (i==0)
        res.pb(stred+1);
      else
        res.pb(stred+1);
    }    
    if (zle)
    {
      cout<<"Transportation failed"<<endl;
      vlak=0,ciest=0;
      continue;	
    }
    for (int i=0;i<res.size();i++)
    if (i==0)
      cout<<res[i];
    else
      cout<<" "<<res[i];
        
/*      for (int i=0;i<ciest;i++)
      {
        cout<<"rad "<<i<<" : ";
        for (int j=0;j<rad[i].size();j++)
          cout<<rad[i][j]<<" ";
        cout<<endl;  
      }       
*/    
    cout<<endl;
//    cout<<"blabla";
    //vyberame
    for (int i=0;i<=maxi;i++)
      mnoz.insert(make_pair(rad[i].front(),i)),
      rad[i].pop_front();
//    for (multiset<pair<int,int> >::iterator it=mnoz.begin();it!=mnoz.end();it++)
//      cout<<it->first<<" "<<it->second<<endl;  
    for (int i=0;i<vlak;i++)
    {
      pair<int,int> top=*mnoz.begin();
//      cout<<"top : "<<top.first<<" "<<top.second<<endl;
      mnoz.erase(mnoz.begin());
      if (i==0)
        cout<<top.second+1;
      else
        cout<<" "<<top.second+1;
      
      if (rad[top.second].size()>0)
      {
        mnoz.insert(make_pair(rad[top.second].front(),top.second));
        rad[top.second].pop_front();
      }
    }  
    cout<<endl;         
//    cout<<"bla"; 
    continue;
  }

  return 0;
}
