#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

// #define	DEBUG

#define	NEG	100

char ti[1000];
char au[1000];
char ab[10000];
char in[1000];

int tagg(char *);

int body = 0;

void main () {
FILE *infile;
int ch, tagger_n, linija_n, nnn, br;
char tag, tagger[1000], linija[1000], ssta[10];

for(br=1; br<1000; br++) {
sprintf(ssta, "%3d", br);
if (ssta[0]==' ') ssta[0]='0';
if (ssta[1]==' ') ssta[1]='0';
if (ssta[2]==' ') ssta[2]='0';
strcat(ssta, ".htm");

if ((infile=fopen(ssta, "r"))==NULL) {
   exit(0);
   }

linija_n=0;
for (;(ch=fgetc(infile))!=EOF;) {
   if (ch=='<') {
      tag=1;
      tagger_n=0;
      }
   if (tag==1 && ch=='>') {
		tagger[tagger_n]=0;
		linija[linija_n]=0;
   	nnn=tagg(tagger);
      #ifdef DEBUG
         printf("TAG_ = %d\n", nnn);
      #endif
      switch(nnn) {
      	case 99:
         	body=1;
         	break;
      	case 199:
            printf("~#!NEXT#~\n");
         	body=0;
         	break;
         case 21:
         case 121:
			case 45:
         case 145:
         case 26:
         case 126:
         case 125:
            break;
         case 25:
         	linija[linija_n++]='\n';
            linija[linija_n]=0;
            break;
         case 27:
            strcat(linija, "<UL>");
            break;
         case 127:
            strcat(linija, "</UL>");
            break;
         case 29:
            strcat(linija, "<OL>");
            break;
         case 129:
            strcat(linija, "</OL>");
            break;
         case 28:
            strcat(linija, "<LI>");
            break;
         case 128:
            strcat(linija, "</LI>");
            break;
        	default:
            strcat(linija, "<");
            strcat(linija, tagger);
            strcat(linija, ">");
      		break;
         }
      if (strlen(linija)>0 && body) {
         printf("%s", linija);
         }
      memset(linija, 0, 1000);
      linija_n=0;
      tag=0;
      }
   if (tag==1) {
   	if (ch!='<') {
			tagger[tagger_n++]=(char)ch;
			}
      }
   else {
      if (ch!='>') {
   		linija[linija_n++]=(char)ch;
      	}
   	}
   }

fclose(infile);
 } /* KRAJ FOR */
}

int tagg(char *ssta) {
int i, j=0;
char negacija = 0, sta[1000];

strcpy(sta, ssta);
if (sta[0]=='/')
	negacija = 1;

for (i=negacija; i<1000 && sta[i]!=0; i++) {
   if (sta[i]=='"')
      j=j+1;
   if (j>1)
   	j=0;
   if (j==0)
   	sta[i-negacija]=(char)toupper(sta[i]);
   }
sta[i-negacija]=0;
#ifdef DEBUG
   printf("\n>>>TAG (%d): %s<<<\n", negacija, sta);
#endif

switch(sta[0]) {
	case 'T':
      switch(sta[1]) {
      	case 'I': /* TITLE */
         	return 1+NEG*negacija;
         case 'R': /* TABLE TR */
         	return 2+NEG*negacija;
         case 'H': /* TABLE TH */
         	return 3+NEG*negacija;
         default:
         	break;
         }
		break;
   case 'S':
   	switch(sta[1]) {
      	case 'U': /* SUP */
         	return 11+NEG*negacija;
      	}
   	break;
   case 'P':
      return 26+NEG*negacija;
   case 'U':
   	switch(sta[1]) {
      	case 'L': /* <UL> */
         	return 27+NEG*negacija;
      	}
   	break;
   case 'O':
   	switch(sta[1]) {
      	case 'L': /* <OL> */
         	return 29+NEG*negacija;
      	}
   	break;
   case 'L':
   	switch(sta[1]) {
      	case 'I': /* <LI> */
         	return 28+NEG*negacija;
      	}
   	break;
   case 'H':
   	switch(sta[1]) {
      	case 'E': /* HEAD */
         	return 21+NEG*negacija;
      	case 'R': /* TABLE HR */
         	return 22+NEG*negacija;
      	}
   	break;
   case 'F':
   	switch(sta[1]) {
      	case 'O': /* FONT */
         	return 125;
         default:
            break;
      	}
   	break;
   case 'B':
   	switch(sta[1]) {
      	case 'O': /* BODY */
         	return 99+NEG*negacija;
      	case 'R': /* BR */
         	return 25;
         default:
            break;
      	}
   	break;
   case 'M':
   	switch(sta[1]) {
      	case 'E': /* META */
         	return 45+NEG*negacija;
         default:
            break;
      	}
   	break;
   }
return 0;
}

