#include <stdio.h>

#define RND(X) (random() % (X))

#define NJOB 11
#define NLPJ  3

struct towermob {
  char *key;
  char *job;
  char *adj[NLPJ];
} joblist[]={
 {"boy", "office boy", {" part-time", "", " old"}},
 {0, "bookkeeper", {" assistant", "", " head"}},
 {0, "secretary", {" young", " legal", " executive"}},
 {0, "accountant", {" junior", " tax", " senior"}},
 {"analyst", "systems analyst", {" temporary", " new", " senior"}},
 {0, "attorney", {" young", " patent", " tax"}},
 {0, "manager", {" office", " sales", " department"}},
 {0, "executive", {" junior", " corporate", " senior"}},
 {"vp", "vice president", {" assistant", "", " executive"}},
 {0, "president", {" former", " current", " recently appointed"}},
 {"director", "of the board", {" member", " member", " chairman"}}
};
main()
{
  int m,n,floor,level;
  int act, aff, ali;
  int vn=11000;
  char buf1[256], buf2[256], buf3[32];

  srandom(getpid());
  for(n=0;n<NJOB;n++)
    for(m=0;m<NLPJ;m++){
      vn++;
      level=1+(m+1)*n*n+RND((n+2)*(n+2));
      sprintf(buf1,"The%s %s",joblist[n].adj[m],joblist[n].job);
      sprintf(buf2,"%s is here.",buf1);
      printf("#%d\n",vn);
      rndstring(buf3);
      printf("%s %s~\n",
        joblist[n].key ? joblist[n].key : joblist[n].job,
        buf3);
      printf("%s~\n%s\n~\n~\n",buf1,buf2);
      act = rndact();
      aff = rndaff();
      ali = RND(2001)-1000;
      printf("%d %d %d S\n",act,aff,ali);
      printf("%d %d %d %dd%d+%d %dd%d+%d\n",
        level,level+1,level+1,
        1,1,(level+7)*(level+5),
        (m+1),(n+m+1)*(level/2),level);
      printf("%d %d\n",n*n+n*m*m,((level+3)*(level+13)*(level+17))/2);
      printf("8 8 %d\n",1+RND(2));
    }
}
rndaff()
{
  int m;

  m = 268435456;
  if(RND(3))
    m |= 8;
  return(m);
}
rndact()
{
  int m;

  m = 0;
  if(!RND(5))
    m += 1024;
  if(!RND(5))
    m += 16384;
  return(m);
}
rndstring(char *buf)
{
  int i;

  for(i=0;i<4;i++){
    buf[i]='a'+RND(26);
    buf[4]=0;
  }
}