#include <stdio.h>
#include <stdbool.h>


typedef struct {
    int year, month, date;
} Date;

typedef struct {
    const char * name;
    Date begin_date;
} Era;


const Era ERAS[] = {
    {"meiji", {1868, 9, 8}},
    {"taisho", {1912, 7, 30}},
    {"showa", {1926, 12, 25}},
    {"heisei", {1989, 1, 8}}
};

const int ERAS_SIZE = sizeof(ERAS) / sizeof(Era);

const int ERA_PRE_MEIJI = -1;
const int ERA_MEIJI = 0;
const int ERA_TAISHO = 1;
const int ERA_SHOWA = 2;
const int ERA_HEISEI = 3;

const int ERA_BEGIN_YEAR[] = {1868, 1912, 1926, 1989}; 
const int ERA_BEGIN_MONTH[] = {9, 7, 12, 1};
const int ERA_BEGIN_DATE[] = {8, 30, 25, 8};

int compare_date(Date d1, Date d2); 
const Era* era_of_date(Date date);
void print_date(const Era *era, Date date);

int main()
{
    int year, month, day;
    while (scanf("%d%d%d", &year, &month, &day) != EOF) {
        const Date date = {year, month, day}; //ここにconstをつけてるのは完全に趣味です
        const Era *era = era_of_date(date);   //ここにconstをつけてるのは趣味じゃありません
        print_date(era, date);
    }

    return 0;
}


// d1 と d2 を比較し、前者が早ければ負、後者が早ければ正、同じなら0を返す
// ポインタ渡しのほうがいいかな？
int compare_date(Date d1, Date d2)
{

    if (d1.year < d2.year) {
        return -1;
    } else if (d1.year > d2.year) {
        return 1;
    }

    //以下、年が同じである場合
    if (d1.month < d2.month) {
        return -1;
    } else if (d1.month > d2.month) {
        return 1;
    }

    //以下、年と月が同じである場合
    if (d1.date < d2.date) {
        return -1;
    } else if (d1.date > d2.date) {
        return 1;
    }

    //同じ日付である場合
    return 0;
}

//pre-meijiを特別扱いする方法は結構悩ましい
//ここではpre_meijiならNULLを返すことにする
//bool era_of_date(Era *era, Date date); ともいいと思う
const Era* era_of_date(Date date)
{
    //元号の線形探索を行う
    //平成から順に比較したほうがpre-meijiの処理が綺麗になる
    for (int era_index = ERAS_SIZE - 1; era_index >= 0; era_index--) {
        const int compare_result = compare_date(ERAS[era_index].begin_date, date); //ここにconstをつけてるのは完全に趣味です
        if (compare_result <= 0) {
            return &ERAS[era_index]; //ポインタ演算は邪悪だと思うけど
        }
    }

    return NULL;
}

//正直ここでnullを渡すとpre-meijiになるという仕様は気持ち悪い
//すべては代数的データ構造のないCが悪い
void print_date(const Era *era, Date date)
{
    if (era == NULL) {
        printf("pre-meiji\n");
        return;
    }

    const int era_begin_year = era->begin_date.year;  //ここらへんにconstをつけてるのは完全に趣味です
    const int era_year = date.year - era_begin_year + 1;

    printf("%s %d %d %d\n", 
            era->name,
            era_year, date.month, date.date
          );
}