text: #pragma comment(linker, "/stack:640000000")
  
  #include <algorithm>
  #include <bitset>
  #include <cassert>
  #include <cctype>
  #include <climits>
  #include <cmath>
  #include <cstdio>
  #include <cstdlib>
  #include <cstring>
  #include <fstream>
  #include <iostream>
  #include <iomanip>
  #include <iterator>
  #include <list>
  #include <map>
  #include <numeric>
  #include <queue>
  #include <set>
  #include <sstream>
  #include <stack>
  #include <string>
  #include <utility>
  #include <vector>
  using namespace std;
  
  
  
  const double EPS = 1e-9;
  const int INF = 0x7f7f7f7f;
  const double PI=acos(-1.0);
  
  #define    READ(f) 	         freopen(f, "r", stdin)
  #define    WRITE(f)   	     freopen(f, "w", stdout)
  
  #define    MP(x, y) 	     make_pair(x, y)
  #define    SZ(c) 	         (int)c.size()
  #define    PB(x)             push_back(x)
  
  #define    rep(i,n)          for(i=1;i<=n;i++)
  #define    repI(i,n)         for(i=0;i<n;i++)
  #define    F(i,L,R)	         for (int i = L; i < R; i++)
  #define    FF(i,L,R) 	     for (int i = L; i <= R; i++)
  #define    FR(i,L,R) 	     for (int i = L; i > R; i--)
  #define    FRF(i,L,R) 	     for (int i = L; i >= R; i--)
  #define    FOREACH(i,t)      for (typeof(t.begin()) i=t.begin(); i!=t.end(); i++)
  #define    ALL(p) 	         p.begin(),p.end()
  #define    ALLR(p) 	         p.rbegin(),p.rend()
  
  #define    SET(p) 	         memset(p, -1, sizeof(p))
  #define    CLR(p)            memset(p, 0, sizeof(p))
  #define    MEM(p, v)         memset(p, v, sizeof(p))
  #define    CPY(d, s)         memcpy(d, s, sizeof(s))
  
  #define    getI(a) 	         scanf("%d", &a)
  #define    getII(a,b) 	     scanf("%d%d", &a, &b)
  #define    getIII(a,b,c)     scanf("%d%d%d", &a, &b, &c)
  #define    getL(a)           scanf("%lld",&a)
  #define    getLL(a,b)        scanf("%lld%lld",&a,&b)
  #define    getLLL(a,b,c)     scanf("%lld%lld%lld",&a,&b,&c)
  #define    getC(n)           scanf("%c",&n)
  #define    getF(n)           scanf("%lf",&n)
  #define    getS(n)           scanf("%s",n)
  
  #define    vi 	 vector < int >
  #define    vii 	 vector < vector < int > >
  #define    pii 	 pair< int, int >
  #define    psi 	 pair< string, int >
  #define    ff 	 first
  #define    ss 	 second
  #define    ll	 long long
  #define    ull 	 unsigned long long
  #define    ui    unsigned int
  #define    us 	 unsigned short
  #define    ld 	 long double
  
  
  template< class T > inline T _abs(T n) { return ((n) < 0 ? -(n) : (n)); }
  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) { return (((a)<(b))?(a):(b)); }
  template< class T > inline T _swap(T &a, T &b) { a=a^b;b=a^b;a=a^b;}
  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) / gcd((a), (b)) * (b)); }
  
  //******************DELETE****************
  #define shubhashis
  #ifdef shubhashis
       #define debug(args...) {dbg,args; cerr<<endl;}
  #else
      #define debug(args...)  // Just strip off all debug tokens
  #endif
  
  struct debugger{
      template<typename T> debugger& operator , (const T& v){
          cerr<<v<<" ";
          return *this;
      }
  }dbg;
  
  /// ********* debug template bt Bidhan Roy *********
  
  template < typename F, typename S >
  ostream& operator << ( ostream& os, const pair< F, S > & p ) {
      return os << "(" << p.first << ", " << p.second << ")";
  }
  
  template < typename T >
  ostream &operator << ( ostream & os, const vector< T > &v ) {
      os << "{";
      typename vector< T > :: const_iterator it;
      for( it = v.begin(); it != v.end(); it++ ) {
          if( it != v.begin() ) os << ", ";
          os << *it;
      }
      return os << "}";
  }
  
  template < typename T >
  ostream &operator << ( ostream & os, const set< T > &v ) {
      os << "[";
      typename set< T > :: const_iterator it;
      for ( it = v.begin(); it != v.end(); it++ ) {
          if( it != v.begin() ) os << ", ";
          os << *it;
      }
      return os << "]";
  }
  
  template < typename F, typename S >
  ostream &operator << ( ostream & os, const map< F, S > &v ) {
      os << "[";
      typename map< F , S >::const_iterator it;
      for( it = v.begin(); it != v.end(); it++ ) {
          if( it != v.begin() ) os << ", ";
          os << it -> first << " = " << it -> second ;
      }
      return os << "]";
  }
  
  #define deb(x) cerr << #x << " = " << x << endl;
  //******************DELETE****************
  
  int Set(int N,int pos)
  {
      return N=N | (1<<pos);
  }
  int reset(int N,int pos)
  {
      return N=N & ~(1<<pos);
  }
  bool check(int N,int pos)
  {
      return (bool)(N & (1<<pos));
  }
  
  struct data
  {
      int pos,port,starBrd;
      data()
      {
          ;
      }
      data(int a,int b,int c)
      {
          pos=a,port=b,starBrd=c;
      }
      const bool operator < ( const data &r ) const{
          return ( pos < r.pos );
      }
  
  };
  
  vi v;
  int pri[204][10004],dp[204][10004];
  //map <data,int> dp,pri;
  int totLen,len,resLen;
  
  int call(int pos,int port,int starBrd)
  {
      if(pos>=len) return 0;
  
      int &ret = dp[pos][port];
      if(ret!=-1) return ret;
  
      int flg=0;
      int r1,r2;
      r1=r2=0;
      if(port+v[pos]<=totLen)
      {
          r1=1+call(pos+1,port+v[pos],starBrd);
          flg=1;
      }
      if(starBrd+v[pos]<=totLen)
      {
          r2=1+call(pos+1,port,starBrd+v[pos]);
          flg=1;
      }
      if(!flg)
      {
          resLen=pos;
          return dp[pos][port]=0;
      }
      int ans=0;
      if(r1>=r2)
      {
          pri[pos][port]=1;
          ans=r1;
      }
      else
      {
          pri[pos][port]=2;
          ans=r2;
      }
      return dp[pos][port]=ans;
  }
  
  void print(int pos,int port,int starBrd)
  {
      if(pos>=len) return;
  
      if(pri[pos][port]==1)
      {
          printf("port\n");
          print(pos+1,port+v[pos],starBrd);
      }
      else if(pri[pos][port]==2)
      {
          printf("starboard\n");
          print(pos+1,port,starBrd+v[pos]);
      }
      else return;
  }
  
  int main() {
      //READ("in.txt");
      //WRITE("out.txt");
  
      int t;
      getI(t);
      for(int ci=1;ci<=t;ci++)
      {
          v.clear();
          SET(dp);
          CLR(pri);
          getI(totLen);
          totLen*=100;
          len=0;
          int x;
          while(getI(x) && x)
          {
              //x/=100;
              v.PB(x);
              len++;
          }
          cout << call(0,0,0) <<endl;
          print(0,0,0);
          if(ci<t) printf("\n");
      }
      return 0;
  }
  