#include <cstdio>
#include <iostream>

using namespace std;

const char ALPH[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int AMAP[256];

unsigned char c, buf[128];

int pos=0; //в какую позицию выводили в прошлый раз
void char_out(char c) {
  pos++;
  fwrite(&c,1,1,stdout);
  if (pos==76) {
    printf("\r\n");
    pos=0;
  }
}

//объединение для считывания символов текста
union {
  int gval;
  unsigned char bytes[4];
}group;

void base64_to_text(){
  printf("Content-Transfer-Encoding: 8bit\r\n\r\n");
  const unsigned char *c; int i;
  //заполним массив, позволяющий по символу сразу получить порядковый номер
  for (c=(unsigned char*)ALPH, i=0; *c!=0; c++, i++) AMAP[*c]=i;
  AMAP['=']=0;
  unsigned char s[4],p[4];
  bool data_ready = false;
  int r;
  int zero_cnt=0;
  for(;;) {
    //считываем очередную четверку символов
    int zcnt=0;
    for(r=0;r<=3;){
      int res = fread(&s[r],1,1,stdin);
      if (res==0) break;
      if (s[r]=='=')
        zcnt++;
      if (s[r]>13) r++;
    }

    //выводим предыдущую группу целиком
    if (data_ready){
      fwrite(&group.bytes[2],1,1,stdout);
      if (zero_cnt<=1) fwrite(&group.bytes[1],1,1,stdout);
      if (zero_cnt==0) fwrite(&group.bytes[0],1,1,stdout);
    }

    if (r==0) break; //данные кончились

    zero_cnt = zcnt;
    //раскодируем прочитанные 4 символа
    group.gval = 0;
      for (int i=3; i>=0; i--) {
      int code = AMAP[s[i]];
      group.gval = group.gval >> 6;
      group.bytes[2] = group.bytes[2] | (code << 2);
    }
    data_ready = true;
  }
}

void text_to_base64(){
  printf("Content-Transfer-Encoding: base64\r\n\r\n");
  int r,g;
  for (;;) {
    //читаем очередные 3 байта
    group.gval=0;
    r = fread(&group.gval,1,3,stdin);
    if (r==0) break;
    //переворачиваем байты в числе (т.к. оно хранится наоборот)
    unsigned char t = group.bytes[0];
    group.bytes[0] = group.bytes[2];
    group.bytes[2] = t;
    //сколько добавили нулевых байтов
    r = 3-r;
    //сколько символов печатаем перед '='
    int pr = 4-r;
    for (int i=1; i<=4; i++) {
      //получаем очередную группу
      g = (group.bytes[2] & 0xFC) >> 2;
      if (i<=pr) char_out(ALPH[g]); else char_out('=');
      group.gval = group.gval << 6;
    }
    if (r>0) break;
  }
  //если при выводе осталась непустая строка, вставляем \13\10
  if (pos!=0) printf("\r\n");
}

int main() {
//  freopen("base64.in","rb",stdin);
//  freopen("base64.out","wb",stdout);

  fread(buf,27,1,stdin);
  fread(&c,1,1,stdin);
  if (c=='8') {
    fread(buf,7,1,stdin);
    text_to_base64();
  }
  else {
    fread(buf,9,1,stdin);
    base64_to_text();
  }
  return 0;
}
