struct k {
	unsigned short un1;
	unsigned short un2;
	unsigned short maj;
	unsigned short min;
	char sccs[80];
	char name[128];
	unsigned short un3;
	unsigned short un4;
	long  ip[10];
	unsigned short  un6[10];
	long zahl[12];
	long bytes[12];
};
#include <time.h>
int main(void)
{
	struct k k;
	int r;
	int i;
	long t;
	long ti;
	long now=time(0);
	int m[12];
	int alive=1;
	r=read(0,&k,sizeof(k));
	if (r!=sizeof(k)) _exit(3);
	if (now - 86400*365 > k.ip[0]) _exit(1);
	ti=(now - k.ip[0]) / 86400;
	printf("N%s\n",k.name);
	for (i=0;i<12;i++)
		m[i]='0';
	if (now-k.ip[0] > 120*86400)
		alive=0;
	/* workaround: schönwetterprogrammierer */
	/* wenn im Vormonat keine Nachricht hereinkam wird der
	 * Statistikzähler nicht gelöscht. Nun könnte man meinen
	 * das teilweise mit Hilfe des 10er-Arrays der Importzeiten
	 * flicken zu können aber das tut so nicht, denn da wird 
	 * nur das erste Element je gesetzt. Oh Frank! */
	{
		long tt;
		struct tm tm1,tm2;
		tm2=*localtime(&k.ip[0]);
		if (k.ip[0])
			m[tm2.tm_mon]='i';
		tm1=*localtime(&now);
		if (now-k.ip[0] > 30 * 86400) {
			int j;
			for (j=(tm2.tm_mon+1)%12; ; j=(j+1)%12) {
				k.zahl[j]=0;
				m[j]='f';
				printf("fix mon %d\n",j+1);
				if (j==tm1.tm_mon)
					break;
			}
			j=(tm1.tm_mon+1)%12;
			k.zahl[j]=0;
			m[j]='f';
			printf("fix mon %d\n",j+1);
		}
	}
	t=0;
	for (i=0;i<12;i++) {
		int j=(i+5)%12;
		printf("M%2d %5ld\n",j+1,k.zahl[j]);
		t+=k.zahl[j];
	}
	printf("A%s\n",alive ? "+" : "-");
	printf("I");
	for (i=0;i<12;i++) {
		printf("%c",m[i]);
	}
	puts("");
	printf("T%5ld\n",t);
	printf("L%5ld\n",ti);
	exit(0);
}
