#include "V.h"

       int  nlcount = 0;
extern long minrand();
       int  seed   = 0;
       int  seeded = 0;

main(ac,av)
	char **av;
{	int    a, c, i, j, k;
	int    line;
	long   l, n, r;
	char   c0, c1, c2;

:1	ac = Vinit(ac,av);

	for (a=1; a<ac; a++) {
		c0 = av[a][0];
	 	switch (c0) {
		case '0':		/* Number of lines */
		case '1': case '2': case '3':
		case '4': case '5': case '6':
		case '7': case '8': case '9':
			sscanf(av[a],"%ld",&n);
:2			V2 "n=%ld.",n D;
		 	break;
		case '-':
		case '+':
			c1 = av[a][1];
			c2 = av[a][2];
			switch(c1) {
			case 'D':
			case 'd':			/* Debug level */
				Vopt(av[a]+2);
:3				V3 "Vlvl=%d", Vlvl D;
				break;
			case 's':
			case 'S':
				i = sscanf(av[a]+2,"%d",&seed);
				if (i <= 0)
					seed = 1;
:2				V2 "seed=%d.",seed D;
				seeded ++;
				break;
			default:
:1				V1 "Unknown option \"%s\" ignored.",av[a] D;
				break;
			}
			break;
		default:
:1			V1 "Unknown param \"%s\" ignored.",av[a] D;
			break;
		}
	}
	if (!seeded) {
		seed = getpid() + time(0L);
:2		V2 "Seed=%d.",seed D;
	}
	minseed(seed);
:3	V3 "minseed(%d) done.",seed D;
	r = minrand();
:2	V2 "r=%ld.",r D;
	line = r % (n + 1);
:2	V2 "Line %d.",line D;
	while ((c=getchar()) != EOF) {
:9		V9 "c=%02X='%c'",c,dsp(c) D;
		if (line == nlcount)
			putchar(c);
		if (c == '\n') {
			++nlcount;
:8			V8 "nlcount=%d.",nlcount D;
			if (nlcount > line)
				exit(0);
		}
	}
	/* Didn't find that many lines in the file.
	*/
	exit(1);
}
