code: libextents

Download patch

ref: 7b55de41c328b9ec8222ab3a9f2fd407e4ca2c59
author: 9ferno <gophone2015@gmail.com>
date: Tue Jan 3 13:48:00 EST 2023

initial commit

diff: cannot open b/tests/0//null: file does not exist: 'b/tests/0//null' diff: cannot open b/tests/1//null: file does not exist: 'b/tests/1//null' diff: cannot open b/tests/2//null: file does not exist: 'b/tests/2//null' diff: cannot open b/tests/3//null: file does not exist: 'b/tests/3//null' diff: cannot open b/tests/4//null: file does not exist: 'b/tests/4//null' diff: cannot open b/tests/addabove//null: file does not exist: 'b/tests/addabove//null' diff: cannot open b/tests/addabove1//null: file does not exist: 'b/tests/addabove1//null' diff: cannot open b/tests/addbelow//null: file does not exist: 'b/tests/addbelow//null' diff: cannot open b/tests/addbelow1//null: file does not exist: 'b/tests/addbelow1//null' diff: cannot open b/tests/addbelow2//null: file does not exist: 'b/tests/addbelow2//null' diff: cannot open b/tests/mergeabove//null: file does not exist: 'b/tests/mergeabove//null' diff: cannot open b/tests/mergenext//null: file does not exist: 'b/tests/mergenext//null' diff: cannot open b/tests/mergeprevious//null: file does not exist: 'b/tests/mergeprevious//null' diff: cannot open b/tests//null: file does not exist: 'b/tests//null'
--- /dev/null
+++ b/.gitignore
@@ -1,0 +1,14 @@
+6.*
+*.6
+tests/6.*
+tests/*.6
+!tests/test.6
+tests/test.*/disk
+tests/flush/disk
+8.*
+*.8
+tests/8.*
+tests/*.8
+!tests/test.8
+*.iso
+*.iso.gz
--- /dev/null
+++ b/chkextents.rc
@@ -1,0 +1,12 @@
+#!/bin/rc
+
+# tests the extents
+
+# cd /mnt/term/home/j/local/plan9/custom/mafs/tests/extents
+# checker.rc
+
+for(b in extents/*){
+	diff $b^/output \
+		<{cat $b^/input | 6.testextents} ||
+		echo '	'$b failed
+}
--- /dev/null
+++ b/extents.c
@@ -1,0 +1,1115 @@
+#include <u.h>
+#include <libc.h>
+#include "extents.h"
+
+/*
+ * Extents are used to manage memory space and disk space. The space is
+ * is split into units of the same size.
+ *
+ * All space is split into a sequence of units. Each such sequence of units
+ * is called an Extent. The data structure Extents is used to contain this
+ * information. Space is added to the Extents using bfree() and allocated
+ * using balloc(). When freed, adjacent extents are coalesced to create a
+ * large extent, if they are continuous.
+ */
+
+Extent *sortbysize(Extents *es, Extent *e);
+void	showextent(int fd, char *pre, Extent *e);
+static int extentsfd = -1;
+
+s64
+belongs(Extent *e, u64 start)
+{
+	if(e == nil)
+		sysfatal("belongs: e == nil");
+	if(e->start+e->len == start)
+		return 0;
+	return start-e->start;
+}
+
+Extent *
+searchlrus(Extents *es, u64 blkno, s64 *closest)
+{
+	Extent *e, *eclosest;
+	s64 howclose;
+
+	if(es == nil || es->lowest == nil)
+		panic("searchlrus: should not happen");
+
+	if(es->lru == nil){
+		*closest = belongs(es->lowest, blkno);
+		return es->lowest;
+	}
+
+	eclosest = e = es->lru;
+	*closest = belongs(e, blkno);
+	if(*closest == 0)
+		return eclosest;
+	for(e = e->next; e != es->lru; e = e->next){
+		howclose = belongs(e, blkno);
+		if(abs(howclose) < abs(*closest)){
+			eclosest = e;
+			*closest = howclose;
+			if(howclose == 0)
+				break;
+		}
+	}
+	return eclosest;
+}
+
+/* TODO? check len and start and not just len */
+Extent *
+searchlrusbysize(Extents *es, u64 len, s64 *closest)
+{
+	Extent *e, *eclosest;
+	s64 howclose;
+
+	if(es == nil || es->lowest == nil)
+		panic("searchlrusbysize: should not happen");
+
+	// print("searchlrusbysize len %llud e->len %llud\n", len, e->len);
+	if(es->lru == nil){
+		*closest = len - es->lowest->len;
+		return es->lowest;
+	}
+
+	eclosest = e = es->lru;
+	*closest = len - e->len;
+	if(closest == 0)
+		return eclosest;
+	for(e = e->next; e != es->lru; e = e->next){
+		howclose = len - e->len;
+		if(abs(howclose) < abs(*closest)){
+			eclosest = e;
+			*closest = howclose;
+			if(howclose == 0)
+				break;
+		}
+	}
+	return eclosest;
+}
+
+void
+removefromlrus(Extents *es, Extent *e)
+{
+	Extent *d, *f;
+
+	if(e == nil || es == nil)
+		return;
+
+//	print("removefromlrus e start %llud len %llud\n", e->start, e->len);
+	/* only entry in the lru linked list */
+	if(e == e->prev && e->prev == e->next){
+		e->prev = e->next = es->lru = nil;
+		es->nlru = 0;
+		return;
+	}
+
+	/* d e f => d f */
+	d = e->prev;
+	f = e->next;
+
+	if(d != nil)
+		d->next = f;
+	if(f != nil)
+		f->prev = d;
+	es->nlru--;
+	e->prev = e->next = nil;
+
+	if(es->lru == e)
+		if(f != nil)
+			es->lru = f;
+		else if(d != nil)
+			es->lru = d;
+		else
+			panic("removefromlrus(): should not be happening\n");
+			// es->lru = nil;
+}
+
+Extent *
+intolrus(Extents *es, Extent *e)
+{
+	Extent *y, *z;
+
+	if(e == nil || es == nil)
+		return nil;
+
+	if(e->prev != nil || e->next != nil)
+		removefromlrus(es, e);
+
+	if(es->lru == nil){
+		e->prev = e->next = e;
+		es->nlru = 1;
+	}else if(es->nlru >= Nlru){
+		/*
+			y z lru
+				to
+			y e lru
+			then make e the lru
+		 */
+		z = es->lru->prev;
+		y = z->prev;
+		z->prev = z->next = nil;
+
+		e->prev = y;
+		y->next = e;
+
+		e->next = es->lru;
+		es->lru->prev = e;
+	}else{
+		/*
+			z lru
+				to
+			z e lru
+			then make e the lru
+		 */
+		z = es->lru->prev;
+		z->next = e;
+		e->prev = z;
+		e->next = es->lru;
+		es->lru->prev = e;
+		es->nlru++;
+	}
+	es->lru = e;
+	return e;
+}
+
+Extent *
+smallest(Extents *es)
+{
+	Extent *e;
+
+	if(es == nil)
+		return nil;
+	for(e = es->lru ? es->lru : es->lowest;
+		e!=nil && e->small != nil; e=e->small)
+		;
+	return e;
+}
+
+Extent *
+biggest(Extents *es)
+{
+	Extent *e;
+
+	if(es == nil)
+		return nil;
+	for(e = es->lru ? es->lru : es->lowest;
+		e!=nil && e->big != nil; e=e->big)
+		;
+	return e;
+}
+
+Extent *
+lowest(Extents *es)
+{
+	if(es == nil)
+		return nil;
+	return es->lowest;
+}
+
+Extent *
+highest(Extents *es)
+{
+	Extent *e;
+
+	if(es == nil)
+		return nil;
+	for(e = es->lru ? es->lru : es->lowest;
+		e!=nil && e->high != nil; e=e->high)
+		;
+	return e;
+}
+
+Extent *
+addbysize(Extents *es, Extent *e)
+{
+
+	s64 dir = 0;
+	Extent *eprev, *euse, *dsmall, *fbig;
+
+	if(es == nil)
+		panic("arrangebysize es == nil");
+	if(chatty9p > 7)
+	fprint(2, "addbysize es->lowest %8#p e %8#p es->n %llud es->lru %8#p\n", es->lowest, e, es->n, es->lru);
+//	showextents(2, "addbysize\n", es);
+
+	if(chatty9p > 7)
+		print("addbysize es->n %llud e->start %llud e->len %llud\n", es->n, e->start, e->len);
+
+	/* using the lru of extents to find the closest.
+		dir = e->len - es->lru->len */
+	eprev = euse = searchlrusbysize(es, e->len, &dir);
+	if(e == nil || euse == nil)
+		panic("addbysize: e == nil");
+	if(chatty9p > 7)
+		print("addbysize dir %lld euse start %llud len %llud\n", dir, euse->start, euse->len);
+	if(dir < 0){
+		/*	e->len - es->lru->len < 0
+			find a same sized extent by scrolling down */
+		while(euse != nil && e->len < euse->len){
+			eprev = euse;
+			euse = euse->small;
+		}
+		/*	euse e eprev
+				euse->len <= e->len
+				e->len < eprev->len
+		 */
+		if(euse == nil){
+			/* at the smallest extent, add below */
+			eprev->small = e;
+			e->big = eprev;
+			e->small = nil;
+			return e;
+		}else if(euse->len < e->len){
+			/* if different sized euse, close it */
+			eprev->small = e;
+			e->big = eprev;
+			e->small = euse;
+			euse->big = e;
+			return e;
+		}
+		euse = eprev;
+	}else if(dir > 0){
+		/*	 e->len - es->lru->len > 0
+			find a same sized extent by scrolling up */
+		while(euse != nil && e->len > euse->len){
+			eprev = euse;
+			euse = euse->big;
+		}
+		/*	eprev e euse
+				e->len <= euse->len
+				eprev->len < e->len
+		 */
+		if(euse == nil){
+			/* at the biggest extent, add above */
+			eprev->big = e;
+			e->small = eprev;
+			e->big = nil;
+			return e;
+		}else if(e->len < euse->len){
+			/* if different sized euse, close it */
+			eprev->big = e;
+			e->small = eprev;
+			euse->small = e;
+			e->big = euse;
+			return e;
+		}
+		euse = eprev;
+	}
+	/* dir == 0
+		find position using the block number as long as size matches
+		search up by block number */
+	while(euse != nil && e->len == euse->len && euse->start < e->start){
+		eprev = euse;
+		euse = euse->big;
+	}
+	euse = eprev;
+	if(chatty9p > 7)
+	print("addbysize after scroll up eprev start %llud len %llud\n", eprev->start, eprev->len);
+	/* search down by block number */
+	while(euse != nil && e->len == euse->len && e->start < euse->start){
+		eprev = euse;
+		euse = euse->small;
+	}
+	/* euse e eprev */
+	if(e->len < eprev->len ||
+		(e->len == eprev-> len && e->start < eprev->start)){
+		fbig = eprev;
+		dsmall = eprev->small;
+	}else{
+		dsmall = eprev;
+		fbig = eprev->big;
+	}
+
+	if(chatty9p > 7)
+	print("addbysize after scroll down eprev start %llud len %llud\n", eprev->start, eprev->len);
+	if(chatty9p > 7){
+		print("addbysize e start %llud len %llud\n", e->start, e->len);
+		if(dsmall == nil)
+			print("addbysize dsmall nil\n");
+		else
+			print("addbysize dsmall start %llud len %llud\n", dsmall->start, dsmall->len);
+		if(fbig == nil)
+			print("addbysize fbig nil\n");
+		else
+			print("addbysize fbig start %llud len %llud\n", fbig->start, fbig->len);
+	}
+	if(fbig != nil)
+		fbig->small = e;
+	e->big = fbig;
+	if(dsmall != nil)
+		dsmall->big = e;
+	e->small = dsmall;
+	return e;
+}
+
+Extent *
+addextent(Extents *es, Extent *e, u64 start, u64 len)
+{
+	Extent *c;
+
+	c = emalloc(sizeof(Extent));
+	c->start = start;
+	c->len = len;
+	addbysize(es, c);
+	es->n++;
+	if(chatty9p > 7)
+		print("	+%llud %llud %llud\n", start, start+len-1, len);
+
+	if(start < e->start){
+		/* e->low e =>
+			e->low c e
+		  */
+		if(e->low == nil)
+			es->lowest = c;
+		else
+			e->low->high = c;
+		c->low = e->low;
+		e->low = c;
+		c->high = e;
+		return c;
+	}
+	if(start > e->start){
+		/* e e->high =>
+			e c e->high
+		  */
+		if(e->high != nil)
+			e->high->low = c;
+		c->high = e->high;
+		e->high = c;
+		c->low = e;
+		return c;
+	}
+	print("addextent: should not be here e->start"
+			" %llud .. %llud start %llud len %llud\n",
+			e->start, e->start+e->len-1, start, len);
+	abort();
+	return nil;
+}
+
+/* e start f => e+start+f */
+Extent *
+mergeboth(Extents *es, Extent *e, u64 start, u64 len, Extent *f)
+{
+	Extent *small, *big;
+
+	if(es == nil || e == nil || f == nil)
+		panic("mergeboth: should not be happening\n");;
+	if(e->start+e->len != start || start+len != f->start)
+		panic("mergeboth the caller is wrong\n");
+
+	/* skip e in size lru
+		small e big => small big
+	 */
+	small = e->small;
+	big = e->big;
+	if(small != nil)
+		small->big = big;
+	if(big != nil)
+		big->small = small;
+	e->small = e->big = nil;
+
+	/* skip f in size lru
+		small f big => small big
+	 */
+	small = f->small;
+	big = f->big;
+	if(small != nil)
+		small->big = big;
+	if(big != nil)
+		big->small = small;
+	f->small = f->big = nil;
+
+	e->len += len+f->len;
+	e->high = f->high;
+	if(f->high != nil)
+		f->high->low = e;
+	removefromlrus(es, f);
+	es->n--;
+
+	while(big != nil &&
+			(big->len < e->len ||
+			(big->len == e->len && big->start < e->start))){
+		small = big;
+		big = big->big;
+	}
+	e->small = small;
+	e->big = big;
+	if(small != nil)
+		small->big = e;
+	if(big != nil)
+		big->small = e;
+	return e;
+}
+
+/* e start f => e+start f */
+Extent *
+mergeprevious(Extents *es, Extent *e, u64 start, u64 len)
+{
+	Extent *small, *big;
+
+	if(es == nil || e == nil)
+		panic("mergeprevious: should not be happening\n");;
+	if(e->start+e->len != start)
+		panic("mergeprevious the caller is wrong\n");
+
+	/* skip e in size lru
+		small e big => small big
+	 */
+	small = e->small;
+	big = e->big;
+	if(small != nil)
+		small->big = big;
+	if(big != nil)
+		big->small = small;
+	e->small = e->big = nil;
+
+	e->len += len;
+	if(e->low == nil)
+		es->lowest = e;
+
+	while(big != nil &&
+			(big->len < e->len ||
+			(big->len == e->len && big->start < e->start))){
+		small = big;
+		big = big->big;
+	}
+	e->small = small;
+	e->big = big;
+	if(small != nil)
+		small->big = e;
+	if(big != nil)
+		big->small = e;
+	return e;
+}
+
+/* start e => start+e */
+Extent *
+mergenext(Extents *es, Extent *e, u64 start, u64 len)
+{
+	Extent *small, *big;
+
+	if(es == nil || e == nil)
+		panic("mergenext: should not be happening\n");;
+	if(start+len != e->start)
+		panic("mergenext the caller is wrong\n");
+
+	/* skip e in size lru
+		small e big => small big
+	 */
+	small = e->small;
+	big = e->big;
+	if(small != nil)
+		small->big = big;
+	if(big != nil)
+		big->small = small;
+	e->small = e->big = nil;
+
+	e->start = start;
+	e->len += len;
+	while(big != nil &&
+			(big->len < e->len ||
+			(big->len == e->len && big->start < e->start))){
+		small = big;
+		big = big->big;
+	}
+	e->small = small;
+	e->big = big;
+	if(small != nil)
+		small->big = e;
+	if(big != nil)
+		big->small = e;
+	return e;
+}
+
+/*
+print("between e->prev %llud .. %llud and e %llud .. %llud\n",
+	 e->prev->start, e->prev->start+e->prev->n-1,
+	 e->start, e->start+e->len-1);
+ */
+Extent *
+doadd(Extents *es, u64 start, u64 len)
+{
+	s64 dir;
+	Extent *e, *d, *f;
+
+	if(es == nil)
+		panic("add es == nil");
+	if(es->n == 0){
+		e = emalloc(sizeof(Extent));
+		e->low = e->high = e->small = e->big = nil;
+		e->start = start;
+		e->len = len;
+		es->lowest = e;
+		es->n = 1;
+		return e;
+	}
+
+	/* using the previously used extents */
+	d = f = e = searchlrus(es, start, &dir);
+	if(e == nil)
+		panic("doadd: e == nil");
+	if(chatty9p > 7){
+		print(" 	belongs(e %llud %llud %llud low %p high %p start %llud %llud %llud) %lld\n",
+				 e->start, e->start+e->len-1, e->len, e->low, e->high,
+				 start, start+len-1, len, dir);
+	}
+
+	if(dir == 0){	/* perfect, e->star+e->len == start */
+		if(e->high != nil &&
+			e->start+e->len == start &&
+			start+len == e->high->start)
+			return mergeboth(es, e, start, len, e->high);
+		else
+			return mergeprevious(es, e, start, len);
+	}
+	else if(dir < 0){	/* start < e->start */
+		while(e != nil && start < e->start){
+			f = e;
+			e = e->low;
+		}
+		/* e start f => e+start+f */
+		if(e != nil && f != nil &&
+			e->start+e->len == start &&
+			start+len == f->start)
+			return mergeboth(es, e, start, len, f);
+
+		/* e start f => e+start f */
+		if(e != nil && e->start+e->len == start)
+			return mergeprevious(es, e, start, len);
+
+		/* e start f => e start+f */
+		if(f != nil && start+len == f->start)
+			return mergenext(es, f, start, len);
+
+		if(e == nil)/* start f */
+			return addextent(es, f, start, len);
+		else		/* e start f */
+			return addextent(es, e, start, len);
+
+	}else /* if(dir > 0) */{	/* start > e->start */
+		while(e != nil && start > e->start){
+			d = e;
+			e = e->high;
+		}
+		/* d start e => e+start+f */
+		if(d != nil && e != nil &&
+			d->start+d->len == start &&
+			start+len == e->start)
+			return mergeboth(es, d, start, len, e);
+
+		/* d start e => d+start e */
+		if(d != nil && d->start+d->len == start)
+			return mergeprevious(es, d, start, len);
+
+		/* d start e => d start+e */
+		if(e != nil && start+len == e->start)
+			return mergenext(es, e, start, len);
+
+		return addextent(es, d, start, len);
+	}
+}
+
+Extent *
+add(Extents *es, u64 start, u64 len)
+{
+	Extent *e;
+
+	if(chatty9p > 7){
+		showextents(2, "		before\n", es);
+		fprint(2, " +%llud %llud\n", start, len);
+	}
+	e = intolrus(es, doadd(es, start, len));
+	if(chatty9p > 7)
+		showextents(2, "		after\n", es);
+	return e;
+}
+
+/*
+	remove from all the linked lists: lru's, start's, len's
+	change Extents.lowest if it is the lowest
+ */
+static u64
+pluck(Extents *es, Extent *e)
+{
+	Extent *dlow, *fhigh, *dsmall, *fbig;
+	u64 start;
+
+	if(es == nil || e == nil || es->lowest == nil)
+		panic("pluck(): should not happen");
+
+	removefromlrus(es, e);
+
+	/* if e is the only entry in es */
+	if(e->low == nil && e->high == nil){
+		es->lowest = nil;
+		es->n = 0;
+		start = e->start;
+		free(e);
+		return start;
+	}
+
+	/* there are atleast 2 elements in the list */
+	if(es->lowest == e)
+		es->lowest = e->high;
+
+	/* d e f => d f */
+	dlow = e->low;
+	fhigh = e->high;
+	dsmall = e->small;
+	fbig = e->big;
+
+	/* d e nil => d nil */
+	if(fhigh == nil)
+		dlow->high = nil;
+	if(fbig == nil)
+		dsmall->big = nil;
+
+	/* nil e f => nil f */
+	if(dlow == nil)
+		fhigh->low = nil;
+	if(dsmall == nil)
+		fbig->small = nil;
+
+	if(dlow != nil && fhigh != nil){
+		dlow->high = fhigh;
+		fhigh->low = dlow;
+	}
+	if(dsmall != nil && fbig != nil){
+		dsmall->big = fbig;
+		fbig->small = dsmall;
+	}
+	start = e->start;
+	es->n--;
+	free(e);
+	return start;
+}
+
+/* leave the position in the lrus and starts the same */
+u64
+slice(Extents *es, Extent *e, u64 len)
+{
+	u64 oldstart;
+	Extent *d, *f;
+
+	if(es == nil || e == nil || es->lowest == nil || len == 0 || e->len <= len){
+		showextentslists(2, "slice() panic\n", es);
+		panic("slice(): should not happen es %8#p e %8#p es->lru %8#p len %llud e->len %llud",
+				es, e, es->lru, len, e->len);
+	}
+	oldstart = e->start;
+	e->start += len;
+	e->len -= len;
+
+	/* this is the only extent, nothing more to do */
+	if(es->n == 1)
+		goto Sliced;
+
+	/*
+		change position in the size linked list
+		d e f => d f, add e somewhere below d where it belongs
+	 */
+	d = e->small;
+	f = e->big;
+	/* already the smallest, nothing more to do */
+	if(d == nil)
+		goto Sliced;
+	d->big = f;
+	if(f != nil)
+		f->small = d;
+	/*
+		removed e from the sized linked list.
+		Now, move it below
+	 */
+	while(d != nil &&
+			(e->len < d->len ||
+			(e->len == d->len && e->start < d->start))){
+		f = d;
+		d = d->small;
+	}
+	e->small = d;
+	e->big = f;
+	if(d != nil)
+		d->big = e;
+	if(f != nil)
+		f->small = e;
+
+Sliced:
+	intolrus(es, e);
+	return oldstart;
+}
+
+/* allocate n blocks and return that block number */
+u64
+balloc(Extents *es, u64 n)
+{
+	Extent *e, *euse;
+	u64 start;
+	char msg[64];
+	s64 dir;
+
+	if(es == nil)
+		panic("balloc: es == nil");
+	if(es->n == 0)
+		panic("balloc entering es->n == 0\n");
+	start = 0;
+	USED(start);
+	qlock(&es->lck);
+	if(es->n == 0)
+		rsleep(&es->isempty);
+	if(chatty9p > 7){
+		snprint(msg, 64, "balloc() %llud blocks:\n", n);
+		showextentslists(2, msg, es);
+	}
+again:
+	e = euse = searchlrusbysize(es, n, &dir);
+	if(chatty9p > 7)
+		fprint(2, "balloc() searchlrusbysize() euse %8#p dir %lld \n", euse, dir);
+	if(dir == 0){
+		while(e != nil && n == e->len){
+			euse = e;
+			e = e->small;
+		}
+		e = euse;
+	}else if(dir < 0){
+		while(e != nil && n <= e->len){
+			euse = e;
+			e = e->small;
+		}
+		e = euse;
+	}else /* if(dir > 0) */{
+		while(e != nil && n > e->len){
+			e = e->big;
+		}
+		/* e == nil when nothing is available */
+	}
+/*	for(e = lowest(es); e != nil && e->len < n; e = e->high)
+		; */
+	if(e == nil){
+		snprint(msg, 64, "balloc() %llud %s: waiting\n", n, es->name);
+		showextents(2, msg, es);
+		if(es->flush){
+			qunlock(&es->lck);
+			(*es->flush)();
+			qlock(&es->lck);
+		}else
+			rsleep(&es->isempty);
+		goto again;
+	}
+	else if(e->len == n)
+		start = pluck(es, e);
+	else /* found something bigger */
+		start = slice(es, e, n);
+
+//		snprint(msg, 64, "balloc()'ed start %llud len %llud blocks:\n", start, n);
+//		showextentswithsize(2, msg, es);
+	if(es->n == 0)
+		panic("balloc exiting es->n == 0\n");
+	qunlock(&es->lck);
+	/* uncomment the below line and the other in bfree() for
+		generating test cases of unforeseen behaviour */
+	if(extentsfd > 0)
+		fprint(extentsfd, "%s-%llud %llud\n", es->name, start, n);
+	return start;
+}
+
+/*
+ reallocate n blocks to nnew blocks and return that block number
+   It is upto the caller to copy the contents and bfree() the old
+   block number if the returned block number <> old block number.
+   Not providing brealloc() as we would need access to the contents
+   to copy stuff over.
+ free n blocks allocated at block number
+ */
+void
+bfree(Extents *es, u64 start, u64 len)
+{
+//	char msg[64];
+
+	if(es == nil)
+		panic("bfree: es == nil");
+	if(len <= 0)
+		panic("bfree: len <= 0");
+	/* uncomment the below line and the other in balloc() for
+		generating test cases of unforeseen behaviour */
+	if(extentsfd > 0)
+		fprint(extentsfd, "%s+%llud %llud\n", es->name, start, len);
+	qlock(&es->lck);
+	add(es, start, len);
+//		snprint(msg, 64, "bfree()d start %llud len %llud blocks:\n", start, len);
+//		showextentswithsize(2, msg, es);
+//	if(es->n == 1) the sleeper could just be waiting for a different len block
+		rwakeup(&es->isempty);
+	if(es->n == 0)
+		panic("bfree exiting es->n == 0\n");
+	qunlock(&es->lck);
+}
+
+/* count the total number of free blocks */
+u64
+nfrees(Extents *es)
+{
+	u64 n = 0;
+	Extent *e;
+
+	if(es == nil)
+		panic("nfrees: es == nil");
+	qlock(&es->lck);
+	for(e = lowest(es); e != nil; e = e->high){
+		n += e->len;
+	}
+	qunlock(&es->lck);
+	return n;
+}
+
+/* string length when the extents are written as a string */
+s32
+sizeofextents(Extents *es)
+{
+	u64 n, used;
+	s8 tmp[128];
+	Extent *e;
+
+	used = 0;
+	qlock(&es->lck);
+	for(e = lowest(es); e != nil; e = e->high){
+		n = snprint(tmp, 128, "%llud %llud %llud\n",
+						e->start, e->start+e->len-1, e->len);
+		if(n == 128)
+			panic("sizeofextents(): increase tmp size");
+		used += n;
+	}
+	// keep it locked?
+	qunlock(&es->lck);
+	return used;
+}
+/*
+	write to *buf returns the length written.
+	Ensure that nbuf has an extra byte at the end
+	as snprint() alway places a terminating NUL byte.
+	If there is no extra byte, the content gets trimmed.
+ */
+s32
+saveextents(Extents *es, s8 *buf, u32 nbuf)
+{
+	u64 used;
+	Extent *e;
+	s32 ret;
+
+	used = 0;
+	qlock(&es->lck);
+	for(e = lowest(es); e != nil; e = e->high){
+		used += snprint(buf+used, nbuf-used,
+						"%llud %llud %llud\n",
+						e->start, e->start+e->len-1, e->len);
+		if(used >= nbuf){
+			panic("saveextents(): increase buf size");
+			ret = -1;	/* increase buf size */
+			goto end;
+		}
+	}
+	ret = used;
+	// keep it locked?
+end:
+	qunlock(&es->lck);
+	return ret;
+}
+
+/* load the extents from buf of length nbuf */
+/* make this be called multiple times to add more extents - not needed now */
+/* assumes that the input is in ascending order of block numbers */
+s32
+loadextents(Extents *es, s8 *buf, u32 nbuf)
+{
+	s8 *p, *ep;
+	u64 start, end, nblocks;
+
+	p = buf;
+	if(es->lru != nil || es->n != 0){
+		panic("extents already loaded.\n"
+			"	TODO make loadextents() be called multiple times");
+	}
+	while(*p != 0 && p-buf < nbuf){
+		start = strtoull(p, &ep, 10);
+		if(p == ep)
+			panic("could not read");
+
+		p = ep;
+		p += 1; /* skip over the space */
+		end = strtoull(p, &ep, 10);
+		if(p == ep)
+			panic("could not read");
+
+		p = ep;
+		p += 1; /* skip over the space */
+		nblocks = strtoull(p, &ep, 10);
+		if(p == ep)
+			panic("could not read");
+		if(end-start+1 != nblocks)
+			panic("loadextents does not match up: start %llud end %llud nblocks %llud",
+					start, end, nblocks);
+
+		p = ep;
+		p++; /* to skip over the new line */
+		bfree(es, start, nblocks);
+	}
+	return es->n;
+}
+
+void
+showextent(int fd, char *pre, Extent *e)
+{
+//	fprint(fd, "%s	prev %8#p small %8#p low %8#p	e %8#p %llud len %llud	next %8#p high %8#p big %8#p",
+//			pre, e->prev, e->small, e->low, e, e->start, e->len, e->next, e->high, e->big);
+	fprint(fd, "%s%llud %llud %llud"
+				"		e %8#p"
+				"		%8#p lru %8#p"
+				"		%8#p start %8#p"
+				"		%8#p len %8#p\n",
+			pre, e->start, e->start+e->len-1, e->len,
+			e,
+			e->prev, e->next,
+			e->low, e->high,
+			e->small, e->big);
+}
+
+void
+showextentspointers(int fd, char *msg, Extents *es)
+{
+	Extent *e;
+
+	fprint(fd, "%s", msg);
+	fprint(fd, "Extents %s n %llud lowest %8#p lru %8#p nlru %d\n",
+				es->name, es->n, es->lowest, es->lru, es->nlru);
+	fprint(fd, "by blkno:\n");
+	for(e = lowest(es); e != nil; e = e->high){
+		fprint(fd, "%llud %llud %llud\n", e->start, e->start+e->len-1, e->len);
+		// showextent(fd, "	", e);
+	}
+}
+
+void
+showextentslists(int fd, char *msg, Extents *es)
+{
+	Extent *e;
+
+	fprint(fd, "%s", msg);
+	fprint(fd, "Extents %s n %llud", es->name, es->n);
+	if(es->lowest)
+		fprint(fd, " lowest (%llud %llud %llud)",
+				es->lowest->start,
+				es->lowest->start+es->lowest->len-1,
+				es->lowest->len);
+	else
+		fprint(fd, " lowest %8#p", es->lowest);
+
+	if(es->lru)
+		fprint(fd, " lru (%llud %llud %llud) ",
+				es->lru->start,
+				es->lru->start+es->lru->len-1,
+				es->lru->len);
+	else
+		fprint(fd, " lru %8#p ", es->lru);
+	fprint(fd, "nlru %d\n", es->nlru);
+
+	fprint(fd, "by blkno:\n");
+	for(e = lowest(es); e != nil; e = e->high){
+		fprint(fd, "%llud %llud %llud\n", e->start, e->start+e->len-1, e->len);
+		// showextent(fd, "	", e);
+	}
+	if(es->lowest != nil){
+		fprint(fd, "by size:\n");
+		for(e = smallest(es); e != nil; e = e->big){
+			fprint(fd, "%llud %llud %llud\n", e->start, e->start+e->len-1, e->len);
+			// showextent(fd, "	", e);
+		}
+	}
+	if(es->lru != nil){
+		fprint(fd, "lru:\n");
+		e = es->lru;
+		do{
+			fprint(fd, "%llud %llud %llud\n", e->start, e->start+e->len-1, e->len);
+			e=e->next;
+		}while(e != nil && e != es->lru);
+	}
+}
+
+void
+showextents(int fd, char *msg, Extents *es)
+{
+	Extent *e;
+
+	fprint(fd, "%s", msg);
+	for(e = lowest(es); e != nil; e = e->high){
+		fprint(fd, "%llud %llud %llud", e->start, e->start+e->len-1, e->len);
+		// showextent(fd, "	", e);
+		fprint(fd, "\n");
+	}
+}
+
+void
+showblocknos(int fd, Extents *es)
+{
+	Extent *e;
+	u64 i;
+
+	for(e = lowest(es); e != nil; e = e->high)
+		for(i = e->start; i<e->start+e->len; i++)
+			fprint(fd, "%llud\n", i);
+}
+
+void *
+emalloc(u32 sz)
+{
+	void *v;
+
+	if((v = mallocz(sz, 1)) == nil)
+		sysfatal("emalloc: %r");
+
+	setmalloctag(v, getcallerpc(&sz));
+	return v;
+}
+
+s8 *
+estrdup(s8 *s)
+{
+	s8 *p;
+
+	p = strdup(s);
+	if(p == nil)
+		sysfatal("estrdup: %r");
+	setmalloctag(p, getcallerpc(&s));
+	return p;
+}
+
+void
+initextents(Extents *es, char *name, void (*flush)(void))
+{
+/*	if(extentsfd < 1)
+		extentsfd = open("/mnt/term/tmp/extents.raw", OWRITE);*/
+
+	es->isempty.l = &es->lck;
+	if(name != nil)
+		strncpy(es->name, name, 32);
+	es->flush = flush;
+}
+
+/*
+	Prepare an extents with the holes of es.
+	Given used blocks, shows the free blocks.
+ */
+Extents *
+holes(Extents *es, Extents *inv)
+{
+	Extent *e;
+	u64 start;
+
+	if(es == nil || inv == nil)
+		return nil;
+	for(e=lowest(es); e!=nil && e->high != nil; e=e->high){
+		start = e->start+e->len;
+		bfree(inv, start, e->high->start-start);
+	}
+	return inv;
+}
--- /dev/null
+++ b/extents.h
@@ -1,0 +1,77 @@
+/*
+ An ordered linked list sorted by block number (->low, ->high).
+	->big or ->small sorted by size and then block number.
+	This is similar in functionality to pool(2).
+ */
+enum
+{
+	Nlru  = 32,
+};
+
+typedef signed char s8;
+typedef signed short s16;
+typedef signed int s32;
+typedef signed long long s64;
+
+typedef unsigned char u8;
+typedef unsigned short u16;
+typedef unsigned int u32;
+typedef unsigned long long u64;
+
+typedef struct Extent Extent;
+typedef struct Extents Extents;
+
+/*
+When allocating blocks from extents:
+1. Of all the extents with the len we need, pick the extent with the lowest blkno.
+2. If no extent of the len we need is available, then break up the smallest extent.
+
+When freeing blocks, it tries to merge with the neighbours to become bigger extents.
+*/
+struct Extent {
+	struct Extent *low, *high;	/* sorted by start */
+	struct Extent *small, *big;	/* sorted by the number of blocks in this extent */
+	u64 start;					/* where this extent starts from */
+	u64 len; 					/* how many units in this extent */
+
+	/* circular least recently used linked list limited to Nlru items */
+	struct Extent *prev, *next;
+};
+
+struct Extents {
+	char name[32];
+	u64 quantum;	/* allocations are a multiple of quantum */
+
+	Extent *lowest;	/* find the first block number in a jiffy */
+	QLock lck;
+	u64 n;			/* number of extents */
+	Rendez isempty; /* fully used, nothing available */
+
+	u8 nlru;		/* number of items in the lru linked list */
+	Extent *lru;	/* least recently used extent in the circular lru linked list */
+
+	void (*flush)(void);
+};
+
+extern int chatty9p;
+void	*emalloc(u32 sz);
+s8	*estrdup(s8 *s);
+void	panic(char *fmt, ...);
+s8	find(Extents *es, u64 bno);
+Extent *add(Extents *es, u64 blkno, u64 len);
+Extents *holes(Extents *es, Extents *inv);
+
+void	showblocknos(int fd, Extents *es);
+void	showextents(int fd, char *msg, Extents *es);
+void	showextentslists(int fd, char *msg, Extents *es);
+void	showextentspointers(int fd, char *msg, Extents *es);
+s32	sizeofextents(Extents *es);
+s32	saveextents(Extents *es, s8 *buf, u32 nbuf);
+s32	loadextents(Extents *es, s8 *buf, u32 nbuf);
+
+u64	 balloc(Extents *es, u64 len);			/* allocate len*quantum */
+void bfree(Extents *es, u64 start, u64 len);/* free len*quantum starting from start */
+u64	 nfrees(Extents *es);
+
+Extent *lowest(Extents *es);
+void	initextents(Extents *es, char *name, void (*flush)(void));
--- /dev/null
+++ b/mkfile
@@ -1,0 +1,23 @@
+</$objtype/mkfile
+
+P=extent
+
+LIB=lib$P.$O.a
+OFILES=$P.$O
+HFILES=/sys/include/$P.h
+
+</sys/src/cmd/mksyslib
+
+install:V:	$LIB
+	cp $LIB /$objtype/lib/lib$P.a
+	cp $P.h /sys/include/$P.h
+
+uninstall:V:
+	rm -f /$objtype/lib/lib$P.a /sys/include/$P.h
+
+$O.%:	%.$O $OFILES $LIB $TESTLIB
+	$LD $LDFLAGS -o $target $prereq
+
+$O.testextents: extents.$O testextents.$O
+	$LD $LDFLAGS -o $target $prereq
+
--- /dev/null
+++ b/testextents.c
@@ -1,0 +1,60 @@
+#include <u.h>
+#include <libc.h>
+#include "extents.h"
+#include <bio.h>
+
+/*
+	test the extents functionality
+	{ echo 2 3 ; echo 100 3; } | ./6.testextents
+ */
+
+int chatty9p = 0;
+
+static void
+usage(void)
+{
+	fprint(2, "usage: testextents [-D ]\n");
+	exits("usage");
+}
+
+void
+main(int argc, char *argv[])
+{
+	Extents es;
+	s8 *line, *p;
+	Biobuf *bp;
+	u64 bno, len;
+	char act;
+
+	ARGBEGIN{
+	default:	usage();
+	case 'D':	chatty9p=8; break;
+	}ARGEND
+
+	if(argc != 0)
+		usage();
+
+	bp = Bfdopen(0, OREAD);
+	Blethal(bp, nil);
+
+	initextents(&es, "testextents", nil);
+	while((line = Brdstr(bp, '\n', 1)) != nil) {
+		act = line[0];
+		if(act == '-'){
+			len = strtoull(line+1, nil, 10);
+			balloc(&es, len);
+		}else{
+			bno = strtoull(line, &p, 10);
+			p++;	/* for the space */
+			len = strtoull(p, nil, 10);
+			bfree(&es, bno, len);
+		}
+		free(line);
+	}
+
+	showextentslists(1, "", &es);
+
+	/* why bother? just exits(nil) as cinap suggests */
+	Bterm(bp);
+	exits(nil);
+}
--- /dev/null
+++ b/tests/0/input
@@ -1,0 +1,9 @@
+1 13
+16399 2048
+20495 2048
+26639 2048
+30735 2048
+55311 2048
+59407 2048
+63503 2033
+18447 2048
--- /dev/null
+++ b/tests/0/output
@@ -1,0 +1,25 @@
+Extents testextents n 7 lowest (1 13 13) lru (16399 22542 6144) nlru 7
+by blkno:
+1 13 13
+16399 22542 6144
+26639 28686 2048
+30735 32782 2048
+55311 57358 2048
+59407 61454 2048
+63503 65535 2033
+by size:
+1 13 13
+63503 65535 2033
+26639 28686 2048
+30735 32782 2048
+55311 57358 2048
+59407 61454 2048
+16399 22542 6144
+lru:
+16399 22542 6144
+63503 65535 2033
+59407 61454 2048
+55311 57358 2048
+30735 32782 2048
+26639 28686 2048
+1 13 13
--- /dev/null
+++ b/tests/1/input
@@ -1,0 +1,12 @@
+0 2
+3 11
+6159 2048
+10255 4096
+16399 2048
+20495 2048
+24591 2048
+40975 2048
+59407 2048
+64649 887
+14351 2048
+2 1
--- /dev/null
+++ b/tests/1/output
@@ -1,0 +1,28 @@
+Extents testextents n 8 lowest (0 13 14) lru (0 13 14) nlru 8
+by blkno:
+0 13 14
+6159 8206 2048
+10255 18446 8192
+20495 22542 2048
+24591 26638 2048
+40975 43022 2048
+59407 61454 2048
+64649 65535 887
+by size:
+0 13 14
+64649 65535 887
+6159 8206 2048
+20495 22542 2048
+24591 26638 2048
+40975 43022 2048
+59407 61454 2048
+10255 18446 8192
+lru:
+0 13 14
+10255 18446 8192
+64649 65535 887
+59407 61454 2048
+40975 43022 2048
+24591 26638 2048
+20495 22542 2048
+6159 8206 2048
--- /dev/null
+++ b/tests/2/input
@@ -1,0 +1,1103 @@
+0 8388608
+-1
+-1
+-20
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+25 1
+85 1
+119 1
+195 1
+-1
+144 1
+163 1
+296 1
+352 1
+103 1
+35 1
+66 1
+188 1
+58 1
+229 1
+98 1
+145 1
+48 1
+86 1
+100 1
+199 1
+74 1
+-1
+36 1
+106 1
+118 1
+146 1
+165 1
+202 1
+-1
+72 1
+354 1
+193 1
+60 1
+148 1
+167 1
+291 1
+51 1
+336 1
+37 1
+125 1
+93 1
+71 1
+149 1
+168 1
+316 1
+357 1
+-1
+61 1
+96 1
+338 1
+151 1
+270 1
+318 1
+298 1
+285 1
+254 1
+113 1
+214 1
+232 1
+244 1
+308 1
+83 1
+152 1
+55 1
+190 1
+269 1
+153 1
+112 1
+320 1
+75 1
+277 1
+117 1
+-1
+154 1
+280 1
+187 1
+263 1
+57 1
+97 1
+138 1
+108 1
+210 1
+213 1
+303 1
+207 1
+267 1
+94 1
+122 1
+218 1
+301 1
+40 1
+247 1
+345 1
+111 1
+253 1
+-1
+198 1
+255 1
+346 1
+178 1
+-1
+80 1
+272 1
+42 1
+292 1
+204 1
+179 1
+311 1
+43 1
+200 1
+348 1
+328 1
+44 1
+329 1
+45 1
+115 1
+181 1
+197 1
+-1
+126 1
+133 1
+143 1
+182 1
+351 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+416 1
--- /dev/null
+++ b/tests/2/output
@@ -1,0 +1,77 @@
+Extents testextents n 28 lowest (42 45 4) lru (416 416 1) nlru 243
+by blkno:
+42 45 4
+57 58 2
+60 61 2
+71 72 2
+74 75 2
+85 86 2
+93 94 2
+96 98 3
+111 113 3
+117 119 3
+125 126 2
+143 146 4
+148 149 2
+151 154 4
+167 168 2
+178 179 2
+181 182 2
+187 188 2
+197 200 4
+213 214 2
+253 255 3
+269 270 2
+291 292 2
+328 329 2
+345 346 2
+351 352 2
+416 416 1
+950 8388607 8387658
+by size:
+416 416 1
+57 58 2
+60 61 2
+71 72 2
+74 75 2
+85 86 2
+93 94 2
+125 126 2
+148 149 2
+167 168 2
+178 179 2
+181 182 2
+187 188 2
+213 214 2
+269 270 2
+291 292 2
+328 329 2
+345 346 2
+351 352 2
+96 98 3
+111 113 3
+117 119 3
+253 255 3
+42 45 4
+143 146 4
+151 154 4
+197 200 4
+950 8388607 8387658
+lru:
+416 416 1
+351 352 2
+181 182 2
+143 146 4
+125 126 2
+197 200 4
+42 45 4
+328 329 2
+178 179 2
+291 292 2
+345 346 2
+253 255 3
+111 113 3
+93 94 2
+213 214 2
+96 98 3
+57 58 2
--- /dev/null
+++ b/tests/3/input
@@ -1,0 +1,1888 @@
+0 8388608
+-1
+-1
+-20
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+25 1
+1 1
+85 1
+119 1
+-1
+195 1
+235 1
+362 1
+144 1
+163 1
+-1
+296 1
+352 1
+416 1
+458 1
+103 1
+35 1
+66 1
+188 1
+58 1
+229 1
+98 1
+-1
+145 1
+164 1
+376 1
+48 1
+86 1
+474 1
+100 1
+492 1
+199 1
+74 1
+456 1
+114 1
+300 1
+36 1
+106 1
+450 1
+118 1
+-1
+531 1
+146 1
+165 1
+202 1
+135 1
+72 1
+354 1
+493 1
+532 1
+256 1
+193 1
+514 1
+60 1
+224 1
+148 1
+167 1
+291 1
+-1
+381 1
+51 1
+440 1
+336 1
+203 1
+37 1
+125 1
+93 1
+-1
+71 1
+149 1
+168 1
+316 1
+52 1
+516 1
+242 1
+357 1
+61 1
+465 1
+257 1
+53 1
+96 1
+517 1
+338 1
+533 1
+151 1
+270 1
+318 1
+-1
+423 1
+298 1
+442 1
+285 1
+-1
+433 1
+254 1
+339 1
+113 1
+453 1
+214 1
+232 1
+244 1
+308 1
+-1
+452 1
+83 1
+152 1
+171 1
+55 1
+92 1
+190 1
+269 1
+153 1
+172 1
+112 1
+320 1
+75 1
+400 1
+-1
+56 1
+277 1
+65 1
+117 1
+154 1
+208 1
+280 1
+187 1
+263 1
+501 1
+57 1
+97 1
+521 1
+138 1
+470 1
+368 1
+412 1
+-1
+47 1
+444 1
+-1
+131 1
+480 1
+108 1
+391 1
+486 1
+367 1
+210 1
+463 1
+479 1
+-1
+522 1
+213 1
+303 1
+427 1
+503 1
+207 1
+267 1
+94 1
+122 1
+102 1
+218 1
+246 1
+-1
+282 1
+301 1
+-1
+420 1
+487 1
+40 1
+247 1
+380 1
+345 1
+431 1
+524 1
+111 1
+158 1
+253 1
+401 1
+358 1
+198 1
+-1
+255 1
+346 1
+116 1
+178 1
+-1
+80 1
+326 1
+272 1
+360 1
+42 1
+126 1
+88 1
+292 1
+-1
+251 1
+204 1
+387 1
+179 1
+311 1
+327 1
+43 1
+221 1
+200 1
+348 1
+439 1
+266 1
+372 1
+328 1
+489 1
+464 1
+44 1
+-1
+399 1
+329 1
+411 1
+142 1
+45 1
+115 1
+181 1
+197 1
+-1
+177 1
+133 1
+370 1
+375 1
+162 1
+143 1
+182 1
+351 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+530 1
+274 1
--- /dev/null
+++ b/tests/3/output
@@ -1,0 +1,13 @@
+Extents testextents n 3 lowest (274 274 1) lru (274 274 1) nlru 3
+by blkno:
+274 274 1
+530 530 1
+1486 8388607 8387122
+by size:
+274 274 1
+530 530 1
+1486 8388607 8387122
+lru:
+274 274 1
+530 530 1
+1486 8388607 8387122
--- /dev/null
+++ b/tests/4/input
@@ -1,0 +1,15246 @@
+0 8388608
+-1
+-1
+-20
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+530 1
+274 1
+25 1
+1 1
+313 1
+471 1
+85 1
+119 1
+195 1
+235 1
+362 1
+144 1
+163 1
+296 1
+644 1
+47 1
+352 1
+416 1
+458 1
+103 1
+436 1
+127 1
+35 1
+66 1
+188 1
+262 1
+91 1
+58 1
+558 1
+229 1
+98 1
+145 1
+164 1
+376 1
+661 1
+48 1
+86 1
+474 1
+616 1
+100 1
+492 1
+531 1
+544 1
+-1
+545 1
+199 1
+353 1
+553 1
+677 1
+74 1
+512 1
+90 1
+456 1
+114 1
+300 1
+402 1
+36 1
+106 1
+450 1
+118 1
+146 1
+-1
+551 1
+165 1
+202 1
+135 1
+72 1
+354 1
+493 1
+532 1
+678 1
+389 1
+256 1
+554 1
+193 1
+448 1
+123 1
+225 1
+422 1
+514 1
+60 1
+224 1
+216 1
+110 1
+148 1
+167 1
+291 1
+315 1
+555 1
+381 1
+51 1
+-1
+440 1
+336 1
+418 1
+203 1
+37 1
+125 1
+136 1
+93 1
+546 1
+605 1
+613 1
+71 1
+149 1
+168 1
+316 1
+663 1
+390 1
+457 1
+52 1
+516 1
+606 1
+681 1
+242 1
+357 1
+624 1
+273 1
+61 1
+150 1
+465 1
+595 1
+582 1
+701 1
+257 1
+-1
+53 1
+107 1
+96 1
+517 1
+608 1
+682 1
+338 1
+533 1
+151 1
+270 1
+318 1
+423 1
+571 1
+298 1
+442 1
+-1
+702 1
+285 1
+433 1
+24 1
+254 1
+297 1
+339 1
+683 1
+113 1
+453 1
+567 1
+214 1
+232 1
+244 1
+308 1
+452 1
+38 1
+83 1
+152 1
+171 1
+393 1
+258 1
+55 1
+92 1
+243 1
+-1
+575 1
+190 1
+269 1
+574 1
+598 1
+153 1
+172 1
+206 1
+112 1
+320 1
+654 1
+75 1
+635 1
+400 1
+56 1
+87 1
+277 1
+576 1
+65 1
+405 1
+117 1
+154 1
+208 1
+276 1
+406 1
+280 1
+187 1
+263 1
+501 1
+-1
+614 1
+57 1
+97 1
+250 1
+521 1
+579 1
+138 1
+470 1
+649 1
+368 1
+412 1
+444 1
+131 1
+480 1
+-1
+599 1
+108 1
+391 1
+486 1
+667 1
+367 1
+210 1
+230 1
+502 1
+463 1
+479 1
+522 1
+577 1
+213 1
+668 1
+566 1
+303 1
+427 1
+503 1
+539 1
+207 1
+267 1
+344 1
+461 1
+94 1
+122 1
+410 1
+102 1
+218 1
+246 1
+81 1
+282 1
+301 1
+669 1
+420 1
+487 1
+578 1
+40 1
+573 1
+627 1
+-1
+247 1
+380 1
+345 1
+564 1
+629 1
+431 1
+524 1
+639 1
+658 1
+689 1
+177 1
+111 1
+325 1
+158 1
+251 1
+626 1
+253 1
+401 1
+601 1
+569 1
+590 1
+358 1
+404 1
+198 1
+255 1
+346 1
+505 1
+287 1
+116 1
+525 1
+178 1
+377 1
+80 1
+326 1
+272 1
+543 1
+388 1
+604 1
+671 1
+360 1
+488 1
+643 1
+42 1
+126 1
+88 1
+-1
+347 1
+227 1
+292 1
+625 1
+630 1
+204 1
+387 1
+526 1
+179 1
+311 1
+631 1
+327 1
+691 1
+69 1
+43 1
+221 1
+200 1
+348 1
+439 1
+266 1
+372 1
+596 1
+383 1
+328 1
+489 1
+541 1
+619 1
+464 1
+673 1
+44 1
+212 1
+-1
+366 1
+265 1
+399 1
+588 1
+329 1
+411 1
+536 1
+460 1
+312 1
+371 1
+161 1
+241 1
+142 1
+245 1
+45 1
+115 1
+181 1
+197 1
+133 1
+563 1
+370 1
+-1
+700 1
+653 1
+375 1
+650 1
+660 1
+162 1
+236 1
+143 1
+182 1
+351 1
+365 1
+632 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+22 1
+129 1
+23 1
+1226 1
+-1
+1152 1
+1287 1
+331 1
+927 1
+552 1
+833 1
+869 1
+695 1
+84 1
+234 1
+591 1
+184 1
+1086 1
+185 1
+491 1
+1133 1
+777 1
+469 1
+676 1
+850 1
+1259 1
+1016 1
+1207 1
+511 1
+128 1
+758 1
+1004 1
+-1
+804 1
+836 1
+1227 1
+1256 1
+219 1
+995 1
+1154 1
+824 1
+239 1
+414 1
+696 1
+897 1
+978 1
+1001 1
+1131 1
+1159 1
+1323 1
+1036 1
+799 1
+559 1
+826 1
+1062 1
+361 1
+560 1
+738 1
+734 1
+-1
+823 1
+851 1
+735 1
+911 1
+1017 1
+620 1
+288 1
+302 1
+333 1
+1228 1
+1267 1
+965 1
+1068 1
+1121 1
+744 1
+314 1
+134 1
+983 1
+49 1
+834 1
+994 1
+954 1
+981 1
+852 1
+24 1
+950 1
+976 1
+1018 1
+1209 1
+295 1
+305 1
+228 1
+76 1
+581 1
+837 1
+1178 1
+542 1
+872 1
+147 1
+698 1
+121 1
+166 1
+1283 1
+662 1
+-1
+720 1
+355 1
+475 1
+937 1
+973 1
+1175 1
+679 1
+853 1
+1258 1
+792 1
+1005 1
+1019 1
+59 1
+334 1
+941 1
+-1
+915 1
+335 1
+454 1
+1079 1
+101 1
+813 1
+1058 1
+1167 1
+722 1
+248 1
+120 1
+68 1
+231 1
+396 1
+873 1
+133 1
+438 1
+1080 1
+827 1
+1165 1
+1314 1
+929 1
+1039 1
+1211 1
+580 1
+495 1
+680 1
+778 1
+854 1
+515 1
+443 1
+760 1
+261 1
+289 1
+971 1
+264 1
+356 1
+1118 1
+-1
+210 1
+393 1
+-1
+1106 1
+1129 1
+874 1
+756 1
+1112 1
+1234 1
+466 1
+1040 1
+-1
+1212 1
+307 1
+1077 1
+496 1
+95 1
+791 1
+1007 1
+855 1
+337 1
+797 1
+805 1
+818 1
+993 1
+421 1
+1240 1
+240 1
+772 1
+1134 1
+1193 1
+1238 1
+169 1
+317 1
+875 1
+939 1
+742 1
+800 1
+1268 1
+221 1
+570 1
+890 1
+967 1
+1105 1
+497 1
+462 1
+1113 1
+-1
+972 1
+816 1
+947 1
+447 1
+609 1
+568 1
+1262 1
+1291 1
+541 1
+-1
+220 1
+787 1
+398 1
+-1
+736 1
+839 1
+431 1
+811 1
+814 1
+830 1
+170 1
+481 1
+664 1
+876 1
+284 1
+434 1
+435 1
+550 1
+498 1
+916 1
+1214 1
+54 1
+518 1
+903 1
+987 1
+1103 1
+857 1
+730 1
+761 1
+535 1
+211 1
+538 1
+1265 1
+828 1
+969 1
+191 1
+382 1
+721 1
+1195 1
+1294 1
+319 1
+961 1
+-1
+547 1
+877 1
+1166 1
+590 1
+703 1
+1043 1
+753 1
+751 1
+363 1
+340 1
+562 1
+1150 1
+767 1
+858 1
+949 1
+1024 1
+397 1
+467 1
+708 1
+840 1
+1008 1
+484 1
+808 1
+926 1
+485 1
+641 1
+634 1
+878 1
+1044 1
+704 1
+822 1
+899 1
+280 1
+473 1
+500 1
+281 1
+684 1
+859 1
+642 1
+1025 1
+1090 1
+321 1
+996 1
+1197 1
+-1
+271 1
+879 1
+705 1
+970 1
+39 1
+912 1
+268 1
+342 1
+741 1
+901 1
+1247 1
+712 1
+928 1
+990 1
+482 1
+593 1
+932 1
+1117 1
+724 1
+725 1
+1182 1
+155 1
+385 1
+841 1
+444 1
+748 1
+209 1
+1046 1
+880 1
+1146 1
+-1
+699 1
+1156 1
+186 1
+294 1
+775 1
+788 1
+884 1
+1218 1
+-1
+322 1
+1266 1
+774 1
+825 1
+904 1
+1006 1
+451 1
+1027 1
+1109 1
+594 1
+175 1
+706 1
+156 1
+766 1
+104 1
+714 1
+948 1
+1012 1
+924 1
+1047 1
+1125 1
+1145 1
+618 1
+-1
+768 1
+780 1
+70 1
+1143 1
+1219 1
+124 1
+77 1
+409 1
+785 1
+688 1
+953 1
+176 1
+483 1
+1130 1
+324 1
+707 1
+1095 1
+157 1
+645 1
+940 1
+746 1
+843 1
+977 1
+1104 1
+1048 1
+1076 1
+739 1
+1066 1
+1115 1
+764 1
+793 1
+428 1
+504 1
+806 1
+829 1
+139 1
+1126 1
+726 1
+803 1
+763 1
+309 1
+-1
+1148 1
+863 1
+902 1
+1173 1
+415 1
+1029 1
+364 1
+1082 1
+1140 1
+754 1
+752 1
+1092 1
+670 1
+844 1
+445 1
+455 1
+41 1
+717 1
+933 1
+1183 1
+1245 1
+1263 1
+615 1
+260 1
+906 1
+-1
+1244 1
+962 1
+449 1
+476 1
+690 1
+864 1
+437 1
+896 1
+424 1
+883 1
+821 1
+888 1
+1332 1
+1050 1
+1242 1
+1307 1
+359 1
+845 1
+895 1
+468 1
+602 1
+984 1
+1114 1
+369 1
+765 1
+1064 1
+769 1
+429 1
+62 1
+413 1
+801 1
+1087 1
+1297 1
+73 1
+997 1
+968 1
+1051 1
+140 1
+672 1
+1157 1
+512 1
+846 1
+1153 1
+-1
+832 1
+919 1
+1014 1
+1088 1
+1101 1
+728 1
+783 1
+963 1
+283 1
+966 1
+1071 1
+527 1
+1132 1
+194 1
+633 1
+723 1
+652 1
+1184 1
+1315 1
+180 1
+432 1
+394 1
+160 1
+807 1
+-1
+819 1
+891 1
+1052 1
+141 1
+992 1
+770 1
+612 1
+847 1
+931 1
+349 1
+82 1
+508 1
+711 1
+1083 1
+1089 1
+192 1
+392 1
+478 1
+718 1
+790 1
+-1
+341 1
+999 1
+1224 1
+89 1
+419 1
+528 1
+100 1
+812 1
+934 1
+1289 1
+1328 1
+922 1
+1172 1
+651 1
+586 1
+1161 1
+1163 1
+105 1
+290 1
+1096 1
+771 1
+237 1
+674 1
+892 1
+350 1
+-1
+1081 1
+719 1
+802 1
+395 1
+648 1
+189 1
+249 1
+529 1
+820 1
+974 1
+1099 1
+330 1
+622 1
+750 1
+378 1
+79 1
+958 1
+988 1
+1034 1
+1054 1
+183 1
+238 1
+374 1
+386 1
+46 1
+99 1
+675 1
+898 1
+1255 1
+849 1
+1177 1
+1282 1
+1296 1
+1334 1
+510 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+964 1
+0 1
+299 1
+920 1
+362 1
+1522 1
+1530 1
+439 1
+328 1
+154 1
+1479 1
+1317 1
+632 1
+-1
+1470 1
+905 1
+1107 1
+1288 1
+1072 1
+1055 1
+479 1
+-1
+1466 1
+1560 1
+401 1
+1367 1
+691 1
+422 1
+163 1
+1500 1
+625 1
+579 1
+1505 1
+-1
+34 1
+373 1
+230 1
+835 1
+383 1
+332 1
+379 1
+1343 1
+918 1
+1059 1
+647 1
+870 1
+663 1
+440 1
+1387 1
+1438 1
+1056 1
+1272 1
+381 1
+517 1
+1035 1
+525 1
+1260 1
+1615 1
+1618 1
+1243 1
+97 1
+1318 1
+1368 1
+1599 1
+1341 1
+551 1
+910 1
+1304 1
+25 1
+123 1
+178 1
+111 1
+1542 1
+1594 1
+223 1
+-1
+279 1
+649 1
+-1
+375 1
+1510 1
+-1
+1579 1
+1097 1
+-1
+1190 1
+1322 1
+74 1
+1060 1
+871 1
+589 1
+697 1
+1388 1
+1257 1
+315 1
+1356 1
+122 1
+316 1
+430 1
+914 1
+1369 1
+1003 1
+558 1
+243 1
+1249 1
+417 1
+1057 1
+543 1
+1491 1
+795 1
+1229 1
+63 1
+646 1
+727 1
+286 1
+1454 1
+564 1
+553 1
+50 1
+67 1
+627 1
+92 1
+494 1
+991 1
+44 1
+1248 1
+569 1
+1108 1
+1346 1
+102 1
+55 1
+1448 1
+1544 1
+377 1
+-1
+1581 1
+418 1
+-1
+81 1
+522 1
+-1
+1230 1
+1321 1
+-1
+563 1
+109 1
+-1
+345 1
+1347 1
+-1
+1116 1
+1191 1
+-1
+115 1
+548 1
+-1
+236 1
+57 1
+-1
+1269 1
+554 1
+-1
+87 1
+673 1
+-1
+1561 1
+1300 1
+-1
+85 1
+1463 1
+-1
+1563 1
+404 1
+-1
+894 1
+1446 1
+-1
+600 1
+408 1
+838 1
+-1
+1231 1
+1497 1
+-1
+1192 1
+1337 1
+-1
+270 1
+985 1
+-1
+909 1
+1336 1
+-1
+205 1
+472 1
+-1
+638 1
+452 1
+-1
+1278 1
+556 1
+-1
+921 1
+35 1
+-1
+107 1
+573 1
+-1
+943 1
+1021 1
+1434 1
+226 1
+-1
+749 1
+301 1
+-1
+671 1
+250 1
+-1
+1422 1
+549 1
+817 1
+-1
+420 1
+1138 1
+-1
+1324 1
+1274 1
+-1
+126 1
+493 1
+743 1
+-1
+513 1
+1518 1
+-1
+143 1
+1293 1
+-1
+759 1
+1392 1
+-1
+1102 1
+1120 1
+-1
+1309 1
+658 1
+-1
+930 1
+1041 1
+-1
+1213 1
+678 1
+-1
+1566 1
+583 1
+-1
+1232 1
+856 1
+-1
+588 1
+610 1
+-1
+557 1
+917 1
+-1
+127 1
+1162 1
+907 1
+399 1
+810 1
+199 1
+1194 1
+1284 1
+-1
+441 1
+938 1
+733 1
+-1
+339 1
+1073 1
+-1
+794 1
+227 1
+352 1
+-1
+1042 1
+661 1
+-1
+217 1
+1490 1
+-1
+272 1
+587 1
+235 1
+73 1
+79 1
+147 1
+46 1
+637 1
+1151 1
+1279 1
+276 1
+599 1
+534 1
+1023 1
+540 1
+781 1
+470 1
+60 1
+410 1
+488 1
+1344 1
+1414 1
+1313 1
+960 1
+1431 1
+1488 1
+1533 1
+208 1
+606 1
+389 1
+1348 1
+1513 1
+232 1
+1149 1
+499 1
+251 1
+1100 1
+519 1
+171 1
+1375 1
+1405 1
+776 1
+900 1
+453 1
+1271 1
+1303 1
+411 1
+1196 1
+913 1
+1340 1
+665 1
+1295 1
+1395 1
+601 1
+47 1
+667 1
+325 1
+153 1
+572 1
+1467 1
+1569 1
+729 1
+304 1
+520 1
+1176 1
+1376 1
+1406 1
+64 1
+1270 1
+1433 1
+412 1
+709 1
+710 1
+173 1
+1011 1
+442 1
+1311 1
+576 1
+1534 1
+124 1
+666 1
+908 1
+946 1
+668 1
+1360 1
+567 1
+446 1
+1217 1
+611 1
+713 1
+592 1
+58 1
+188 1
+274 1
+655 1
+686 1
+1408 1
+796 1
+1026 1
+69 1
+639 1
+456 1
+367 1
+326 1
+174 1
+201 1
+951 1
+745 1
+384 1
+71 1
+461 1
+782 1
+1198 1
+1084 1
+1170 1
+1397 1
+1164 1
+669 1
+1460 1
+1009 1
+285 1
+689 1
+343 1
+1327 1
+936 1
+975 1
+532 1
+860 1
+1378 1
+347 1
+577 1
+110 1
+2 20
+323 1
+390 1
+112 1
+1199 1
+108 1
+1353 1
+1398 1
+640 1
+881 1
+681 1
+1361 1
+287 1
+1420 1
+885 1
+130 1
+523 1
+1275 1
+628 1
+862 1
+1280 1
+164 1
+1028 1
+1139 1
+533 1
+458 1
+146 1
+327 1
+244 1
+1002 1
+1155 1
+291 1
+450 1
+1110 1
+1493 1
+1111 1
+148 1
+1452 1
+1200 1
+36 1
+86 1
+731 1
+682 1
+1220 1
+1306 1
+303 1
+189 1
+1185 1
+37 1
+1462 1
+1528 1
+1573 1
+1000 1
+-1
+1233 1
+1186 1
+292 1
+-1
+1374 1
+125 1
+-1
+1503 1
+1437 1
+1465 1
+1142 1
+203 1
+116 1
+882 1
+1168 1
+1286 1
+463 1
+925 1
+1 1
+460 1
+1049 1
+258 1
+1400 1
+1013 1
+1201 1
+952 1
+1276 1
+616 1
+530 1
+1339 1
+619 1
+259 1
+786 1
+1290 1
+1574 1
+293 1
+893 1
+1468 1
+1320 1
+214 1
+636 1
+1174 1
+1179 1
+629 1
+1030 1
+654 1
+1486 1
+464 1
+-1
+256 1
+1428 1
+1524 1
+104 1
+132 1
+222 1
+889 1
+505 1
+1401 1
+1075 1
+1252 1
+1202 1
+1239 1
+1312 1
+1277 1
+480 1
+1443 1
+-1
+1455 1
+506 1
+1292 1
+135 1
+1222 1
+584 1
+1187 1
+1281 1
+715 1
+471 1
+207 1
+1478 1
+700 1
+329 1
+1180 1
+1299 1
+1363 1
+1425 1
+1402 1
+1458 1
+1203 1
+595 1
+179 1
+1253 1
+507 1
+1345 1
+477 1
+1223 1
+320 1
+-1
+1124 1
+357 1
+172 1
+1459 1
+1119 1
+1427 1
+1499 1
+72 1
+732 1
+193 1
+692 1
+866 1
+159 1
+501 1
+400 1
+1135 1
+255 1
+1136 1
+-1
+1364 1
+1424 1
+1094 1
+1529 1
+1593 1
+1204 1
+1305 1
+300 1
+516 1
+613 1
+56 1
+149 1
+650 1
+-1
+1338 1
+336 1
+1502 1
+1577 1
+1621 1
+1188 1
+167 1
+182 1
+106 1
+459 1
+956 1
+1169 1
+693 1
+867 1
+1181 1
+1254 1
+1033 1
+423 1
+1442 1
+42 1
+224 1
+1558 1
+955 1
+80 1
+1365 1
+536 1
+762 1
+848 1
+388 1
+1015 1
+98 1
+354 1
+1539 1
+78 1
+1237 1
+982 1
+1225 1
+1333 1
+1410 1
+1301 1
+1308 1
+1617 1
+-1
+136 1
+177 1
+370 1
+1429 1
+1492 1
+868 1
+1065 1
+1319 1
+561 1
+694 1
+195 1
+659 1
+1137 1
+1264 1
+1404 1
+187 1
+202 1
+503 1
+144 1
+490 1
+-1
+740 1
+887 1
+1559 1
+252 1
+165 1
+348 1
+391 1
+1471 1
+509 1
+1206 1
+75 1
+103 1
+521 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+1511 1
+783 1
+642 1
+892 1
+965 1
+542 1
+1189 1
+371 1
+1211 1
+648 1
+1158 1
+1355 1
+1085 1
+524 1
+23 1
+798 1
+245 1
+295 1
+706 1
+57 1
+1034 1
+1019 1
+1628 1
+424 1
+97 1
+-1
+131 1
+578 1
+568 1
+1541 1
+403 1
+1517 1
+1624 1
+1519 1
+321 1
+198 1
+630 1
+481 1
+254 1
+1323 1
+864 1
+1483 1
+264 1
+1527 1
+1620 1
+1209 1
+414 1
+1261 1
+1477 1
+82 1
+378 1
+1036 1
+385 1
+305 1
+504 1
+1133 1
+1208 1
+447 1
+590 1
+332 1
+1612 1
+581 1
+91 1
+-1
+797 1
+306 1
+597 1
+1043 1
+215 1
+614 1
+662 1
+1148 1
+1197 1
+342 1
+717 1
+278 1
+942 1
+526 1
+537 1
+265 1
+1635 1
+1648 1
+266 1
+547 1
+1054 1
+180 1
+41 1
+486 1
+1166 1
+197 1
+487 1
+-1
+816 1
+1328 1
+438 1
+416 1
+200 1
+912 1
+1219 1
+482 1
+394 1
+1580 1
+121 1
+1326 1
+216 1
+489 1
+242 1
+1476 1
+59 1
+695 1
+1038 1
+518 1
+777 1
+85 1
+836 1
+1016 1
+1370 1
+1464 1
+246 1
+142 1
+1227 1
+1207 1
+434 1
+99 1
+331 1
+699 1
+317 1
+444 1
+834 1
+790 1
+755 1
+1351 1
+1330 1
+-1
+39 1
+664 1
+574 1
+239 1
+802 1
+262 1
+1210 1
+-1
+1447 1
+1485 1
+1123 1
+701 1
+115 1
+623 1
+989 1
+1371 1
+1062 1
+571 1
+1020 1
+338 1
+380 1
+1545 1
+1121 1
+-1
+594 1
+1582 1
+1583 1
+478 1
+774 1
+1092 1
+294 1
+1050 1
+993 1
+1391 1
+863 1
+0 1
+83 1
+218 1
+670 1
+555 1
+284 1
+915 1
+1525 1
+1565 1
+-1
+334 1
+643 1
+702 1
+178 1
+931 1
+1115 1
+398 1
+1350 1
+1372 1
+1064 1
+1095 1
+1159 1
+405 1
+1546 1
+888 1
+219 1
+469 1
+805 1
+359 1
+906 1
+927 1
+970 1
+427 1
+485 1
+1008 1
+760 1
+1099 1
+1419 1
+1101 1
+1634 1
+1469 1
+672 1
+1235 1
+604 1
+1357 1
+1236 1
+346 1
+1600 1
+929 1
+1018 1
+1440 1
+770 1
+1067 1
+365 1
+544 1
+1022 1
+546 1
+-1
+84 1
+406 1
+919 1
+591 1
+634 1
+750 1
+1079 1
+1627 1
+150 1
+-1
+45 1
+1393 1
+1228 1
+44 1
+1091 1
+605 1
+319 1
+-1
+1066 1
+435 1
+1655 1
+426 1
+1567 1
+166 1
+1071 1
+1153 1
+307 1
+443 1
+1521 1
+1117 1
+-1
+267 1
+1461 1
+559 1
+1548 1
+902 1
+137 1
+656 1
+751 1
+922 1
+1334 1
+433 1
+1258 1
+793 1
+402 1
+1349 1
+275 1
+688 1
+566 1
+1359 1
+1068 1
+1568 1
+157 1
+739 1
+1215 1
+168 1
+675 1
+206 1
+212 1
+1472 1
+1118 1
+953 1
+368 1
+607 1
+945 1
+959 1
+-1
+1585 1
+1144 1
+1436 1
+374 1
+156 1
+1182 1
+1409 1
+160 1
+609 1
+409 1
+1224 1
+617 1
+1216 1
+209 1
+565 1
+425 1
+271 1
+685 1
+1432 1
+379 1
+249 1
+775 1
+1507 1
+1508 1
+998 1
+1550 1
+753 1
+980 1
+120 1
+1082 1
+1010 1
+1310 1
+454 1
+903 1
+455 1
+324 1
+586 1
+1045 1
+1396 1
+1607 1
+1608 1
+-1
+1106 1
+1147 1
+282 1
+119 1
+901 1
+88 1
+716 1
+1302 1
+1238 1
+428 1
+1074 1
+1377 1
+1407 1
+552 1
+1656 1
+381 1
+983 1
+281 1
+283 1
+652 1
+161 1
+1551 1
+1589 1
+413 1
+112 1
+177 1
+42 1
+130 1
+167 1
+98 1
+153 1
+108 1
+933 1
+155 1
+958 1
+392 1
+145 1
+-1
+1564 1
+633 1
+-1
+1096 1
+340 1
+-1
+273 1
+1329 1
+-1
+1263 1
+1150 1
+768 1
+55 1
+728 1
+1161 1
+1195 1
+580 1
+635 1
+657 1
+737 1
+935 1
+1145 1
+467 1
+163 1
+1494 1
+687 1
+861 1
+383 1
+-1
+937 1
+62 1
+-1
+747 1
+1069 1
+-1
+1416 1
+1552 1
+-1
+981 1
+231 1
+-1
+1086 1
+1421 1
+-1
+1430 1
+842 1
+-1
+1514 1
+1445 1
+-1
+1526 1
+1535 1
+-1
+603 1
+1325 1
+-1
+175 1
+213 1
+-1
+1609 1
+335 1
+1473 1
+-1
+1291 1
+972 1
+-1
+800 1
+1496 1
+-1
+1146 1
+449 1
+-1
+1316 1
+279 1
+-1
+451 1
+1109 1
+-1
+1570 1
+476 1
+-1
+38 1
+784 1
+-1
+1572 1
+1379 1
+-1
+1417 1
+1588 1
+-1
+883 1
+674 1
+-1
+764 1
+984 1
+-1
+43 1
+1587 1
+-1
+1553 1
+535 1
+-1
+990 1
+186 1
+1087 1
+-1
+969 1
+877 1
+-1
+372 1
+698 1
+-1
+1531 1
+712 1
+-1
+1415 1
+891 1
+-1
+696 1
+1639 1
+-1
+437 1
+612 1
+-1
+1103 1
+995 1
+-1
+93 1
+40 1
+-1
+419 1
+1399 1
+-1
+436 1
+1283 1
+-1
+631 1
+500 1
+-1
+220 1
+1241 1
+-1
+448 1
+608 1
+-1
+1630 1
+1475 1
+-1
+1352 1
+369 1
+-1
+1234 1
+260 1
+-1
+290 1
+491 1
+-1
+939 1
+1165 1
+-1
+344 1
+979 1
+-1
+1070 1
+1128 1
+-1
+350 1
+407 1
+-1
+1037 1
+310 1
+-1
+560 1
+1619 1
+845 1
+593 1
+221 1
+1285 1
+1554 1
+841 1
+240 1
+763 1
+999 1
+497 1
+812 1
+1586 1
+1296 1
+736 1
+1063 1
+1536 1
+268 1
+462 1
+1362 1
+473 1
+1221 1
+308 1
+261 1
+-1
+684 1
+363 1
+851 1
+100 1
+1157 1
+974 1
+191 1
+1266 1
+826 1
+190 1
+1381 1
+723 1
+1298 1
+1590 1
+846 1
+1606 1
+987 1
+1342 1
+683 1
+1555 1
+641 1
+-1
+778 1
+1515 1
+263 1
+-1
+176 1
+432 1
+-1
+1297 1
+341 1
+957 1
+1450 1
+748 1
+528 1
+926 1
+318 1
+1605 1
+622 1
+585 1
+779 1
+1412 1
+865 1
+1141 1
+850 1
+967 1
+1031 1
+1456 1
+1556 1
+1645 1
+465 1
+1012 1
+788 1
+1614 1
+1140 1
+1171 1
+1273 1
+1354 1
+1314 1
+184 1
+1489 1
+923 1
+756 1
+101 1
+570 1
+598 1
+-1
+878 1
+1523 1
+738 1
+228 1
+988 1
+358 1
+742 1
+884 1
+1382 1
+940 1
+1383 1
+947 1
+971 1
+196 1
+1449 1
+1495 1
+-1
+741 1
+1193 1
+1439 1
+1046 1
+81 1
+1014 1
+734 1
+703 1
+1601 1
+192 1
+1052 1
+1516 1
+1167 1
+366 1
+1403 1
+618 1
+766 1
+54 1
+48 1
+313 1
+1024 1
+1177 1
+515 1
+-1
+116 1
+896 1
+204 1
+1160 1
+475 1
+1506 1
+1053 1
+502 1
+1557 1
+890 1
+704 1
+1626 1
+92 1
+644 1
+-1
+1267 1
+1596 1
+1240 1
+1287 1
+1659 1
+34 1
+1127 1
+1205 1
+1616 1
+337 1
+818 1
+791 1
+277 1
+677 1
+360 1
+129 1
+227 1
+1435 1
+1025 1
+1184 1
+1268 1
+1592 1
+128 1
+1178 1
+429 1
+1048 1
+314 1
+977 1
+1649 1
+1078 1
+1385 1
+837 1
+1093 1
+22 1
+1474 1
+133 1
+911 1
+356 1
+495 1
+705 1
+1366 1
+539 1
+1578 1
+194 1
+508 1
+-1
+50 1
+1247 1
+386 1
+679 1
+545 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+1604 1
+541 1
+-1
+713 1
+881 1
+1637 1
+1039 1
+794 1
+1501 1
+287 1
+964 1
+792 1
+898 1
+1250 1
+1595 1
+840 1
+1386 1
+1481 1
+1658 1
+1400 1
+649 1
+654 1
+1491 1
+1687 1
+-1
+304 1
+1479 1
+1404 1
+616 1
+516 1
+1312 1
+1459 1
+1084 1
+647 1
+532 1
+807 1
+89 1
+328 1
+323 1
+159 1
+1423 1
+785 1
+94 1
+1040 1
+317 1
+806 1
+551 1
+975 1
+1353 1
+1185 1
+253 1
+1212 1
+899 1
+207 1
+997 1
+442 1
+1482 1
+1129 1
+1072 1
+961 1
+1225 1
+726 1
+80 1
+663 1
+835 1
+-1
+1492 1
+1327 1
+1499 1
+1676 1
+707 1
+87 1
+1113 1
+135 1
+1094 1
+136 1
+1364 1
+1458 1
+1631 1
+829 1
+1388 1
+367 1
+172 1
+1154 1
+233 1
+152 1
+361 1
+1242 1
+761 1
+1218 1
+1061 1
+678 1
+1356 1
+952 1
+-1
+1698 1
+944 1
+759 1
+1498 1
+719 1
+109 1
+490 1
+1500 1
+1562 1
+708 1
+210 1
+968 1
+512 1
+874 1
+1097 1
+1395 1
+517 1
+1274 1
+126 1
+740 1
+1122 1
+-1
+1543 1
+1044 1
+772 1
+1397 1
+376 1
+852 1
+450 1
+769 1
+1486 1
+624 1
+538 1
+1186 1
+982 1
+1690 1
+23 1
+39 1
+787 1
+985 1
+1389 1
+1073 1
+122 1
+1558 1
+872 1
+848 1
+1431 1
+480 1
+1502 1
+1058 1
+132 1
+1136 1
+729 1
+1100 1
+505 1
+345 1
+506 1
+1441 1
+651 1
+-1
+1338 1
+1076 1
+1130 1
+525 1
+711 1
+1244 1
+483 1
+882 1
+913 1
+269 1
+302 1
+1390 1
+1243 1
+255 1
+292 1
+-1
+1237 1
+1313 1
+1559 1
+285 1
+446 1
+1503 1
+1426 1
+214 1
+99 1
+257 1
+241 1
+1429 1
+247 1
+1077 1
+710 1
+1321 1
+288 1
+144 1
+83 1
+333 1
+165 1
+484 1
+1245 1
+828 1
+1187 1
+179 1
+224 1
+1408 1
+1000 1
+1581 1
+-1
+950 1
+986 1
+1335 1
+765 1
+1257 1
+164 1
+577 1
+1108 1
+839 1
+860 1
+1446 1
+610 1
+694 1
+180 1
+188 1
+587 1
+343 1
+1116 1
+1180 1
+582 1
+95 1
+548 1
+962 1
+963 1
+767 1
+47 1
+921 1
+823 1
+1230 1
+824 1
+1425 1
+1522 1
+1524 1
+1566 1
+1188 1
+-1
+340 1
+575 1
+1418 1
+994 1
+1277 1
+1707 1
+1009 1
+1533 1
+259 1
+1260 1
+799 1
+1405 1
+862 1
+65 1
+138 1
+217 1
+1621 1
+894 1
+1183 1
+373 1
+606 1
+1684 1
+88 1
+1547 1
+1613 1
+430 1
+1602 1
+1623 1
+873 1
+1433 1
+68 1
+1256 1
+948 1
+238 1
+111 1
+1299 1
+613 1
+1011 1
+556 1
+561 1
+1264 1
+1111 1
+1641 1
+1139 1
+-1
+885 1
+955 1
+907 1
+230 1
+71 1
+1300 1
+1512 1
+60 1
+-1
+1142 1
+375 1
+1149 1
+511 1
+1632 1
+1168 1
+676 1
+1646 1
+804 1
+1363 1
+1434 1
+1270 1
+1051 1
+1080 1
+1532 1
+1683 1
+875 1
+724 1
+621 1
+1394 1
+183 1
+520 1
+1422 1
+1119 1
+1229 1
+387 1
+697 1
+887 1
+549 1
+90 1
+-1
+879 1
+236 1
+1319 1
+1636 1
+808 1
+377 1
+1151 1
+660 1
+248 1
+757 1
+1549 1
+752 1
+274 1
+1599 1
+576 1
+583 1
+1437 1
+1271 1
+492 1
+1331 1
+529 1
+1015 1
+521 1
+690 1
+655 1
+1343 1
+889 1
+77 1
+243 1
+-1
+773 1
+1155 1
+104 1
+1657 1
+37 1
+76 1
+24 1
+1510 1
+1286 1
+453 1
+1438 1
+235 1
+1272 1
+1677 1
+819 1
+55 1
+1375 1
+1705 1
+91 1
+346 1
+1262 1
+1643 1
+388 1
+1226 1
+291 1
+522 1
+1021 1
+1365 1
+1279 1
+714 1
+830 1
+509 1
+653 1
+949 1
+64 1
+1163 1
+722 1
+336 1
+384 1
+1162 1
+1563 1
+754 1
+-1
+1442 1
+1303 1
+1544 1
+252 1
+1057 1
+149 1
+463 1
+1251 1
+1023 1
+79 1
+1672 1
+468 1
+801 1
+1571 1
+1610 1
+205 1
+531 1
+-1
+954 1
+211 1
+855 1
+258 1
+353 1
+86 1
+1304 1
+96 1
+460 1
+1143 1
+1282 1
+1026 1
+103 1
+456 1
+472 1
+-1
+599 1
+1248 1
+-1
+1398 1
+22 1
+194 1
+204 1
+1528 1
+4 1
+355 1
+1320 1
+886 1
+1693 1
+661 1
+925 1
+1252 1
+611 1
+709 1
+1702 1
+815 1
+1174 1
+417 1
+691 1
+401 1
+762 1
+858 1
+844 1
+776 1
+457 1
+584 1
+1454 1
+-1
+536 1
+303 1
+185 1
+876 1
+1305 1
+423 1
+63 1
+-1
+18 1
+1028 1
+408 1
+300 1
+420 1
+1662 1
+671 1
+930 1
+1339 1
+1692 1
+789 1
+51 1
+297 1
+1380 1
+404 1
+1402 1
+854 1
+820 1
+-1
+893 1
+659 1
+-1
+629 1
+1306 1
+474 1
+1650 1
+600 1
+320 1
+299 1
+746 1
+1292 1
+56 1
+59 1
+572 1
+917 1
+1265 1
+148 1
+689 1
+936 1
+589 1
+158 1
+298 1
+567 1
+1194 1
+1042 1
+498 1
+127 1
+1700 1
+976 1
+237 1
+1513 1
+1462 1
+510 1
+771 1
+619 1
+1132 1
+1480 1
+354 1
+1640 1
+1293 1
+615 1
+632 1
+-1
+1685 1
+1575 1
+620 1
+322 1
+1172 1
+1577 1
+244 1
+329 1
+938 1
+327 1
+311 1
+596 1
+847 1
+1196 1
+154 1
+199 1
+208 1
+25 1
+686 1
+1463 1
+326 1
+1466 1
+849 1
+822 1
+431 1
+1035 1
+573 1
+640 1
+397 1
+114 1
+718 1
+107 1
+811 1
+1308 1
+1652 1
+1368 1
+271 1
+1576 1
+1105 1
+601 1
+943 1
+909 1
+54 1
+-1
+312 1
+466 1
+895 1
+182 1
+193 1
+1206 1
+1059 1
+866 1
+810 1
+1488 1
+1032 1
+118 1
+1332 1
+1290 1
+1470 1
+1467 1
+1542 1
+-1
+646 1
+658 1
+745 1
+410 1
+66 1
+1049 1
+400 1
+1538 1
+825 1
+1191 1
+1675 1
+273 1
+645 1
+1173 1
+946 1
+-1
+169 1
+496 1
+880 1
+72 1
+1152 1
+418 1
+1584 1
+357 1
+477 1
+1471 1
+-1
+123 1
+1295 1
+1374 1
+1468 1
+195 1
+1324 1
+309 1
+1065 1
+1369 1
+-1
+1617 1
+203 1
+666 1
+330 1
+1670 1
+36 1
+853 1
+780 1
+569 1
+393 1
+396 1
+960 1
+399 1
+910 1
+14 1
+411 1
+1427 1
+1709 1
+360 1
+-1
+316 1
+1060 1
+1593 1
+503 1
+1217 1
+181 1
+1453 1
+817 1
+1615 1
+422 1
+1478 1
+1170 1
+1490 1
+151 1
+1484 1
+782 1
+667 1
+680 1
+928 1
+1540 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+222 1
+347 1
+186 1
+935 1
+219 1
+1117 1
+605 1
+-1
+633 1
+642 1
+1553 1
+1017 1
+1570 1
+749 1
+728 1
+912 1
+1054 1
+1556 1
+145 1
+1608 1
+1197 1
+1511 1
+1564 1
+177 1
+473 1
+747 1
+1070 1
+1588 1
+1497 1
+1428 1
+131 1
+553 1
+1387 1
+415 1
+764 1
+-1
+1037 1
+781 1
+1473 1
+1118 1
+643 1
+469 1
+1334 1
+1148 1
+1469 1
+20 1
+1686 1
+150 1
+535 1
+537 1
+1205 1
+1477 1
+439 1
+386 1
+763 1
+918 1
+1246 1
+673 1
+1 1
+435 1
+1645 1
+319 1
+1401 1
+1053 1
+513 1
+1407 1
+1004 1
+993 1
+162 1
+481 1
+571 1
+736 1
+1493 1
+838 1
+1219 1
+1036 1
+19 1
+279 1
+1349 1
+213 1
+191 1
+-1
+1236 1
+1378 1
+1294 1
+574 1
+1580 1
+1614 1
+321 1
+1109 1
+489 1
+161 1
+119 1
+901 1
+995 1
+1128 1
+693 1
+1357 1
+61 1
+1307 1
+6 1
+97 1
+163 1
+341 1
+612 1
+493 1
+366 1
+1221 1
+795 1
+413 1
+775 1
+816 1
+53 1
+1638 1
+1370 1
+160 1
+1329 1
+282 1
+1622 1
+550 1
+869 1
+1005 1
+1664 1
+1703 1
+1006 1
+-1
+324 1
+585 1
+171 1
+734 1
+760 1
+470 1
+455 1
+1140 1
+991 1
+931 1
+1359 1
+1107 1
+232 1
+914 1
+856 1
+42 1
+175 1
+458 1
+965 1
+268 1
+1585 1
+530 1
+1102 1
+228 1
+864 1
+1160 1
+143 1
+688 1
+157 1
+539 1
+475 1
+748 1
+725 1
+973 1
+1007 1
+614 1
+1074 1
+-1
+187 1
+441 1
+1362 1
+1565 1
+295 1
+313 1
+939 1
+-1
+679 1
+717 1
+842 1
+7 1
+1708 1
+1254 1
+1138 1
+134 1
+1043 1
+444 1
+192 1
+284 1
+1280 1
+1409 1
+276 1
+125 1
+1255 1
+959 1
+706 1
+953 1
+741 1
+-1
+459 1
+1561 1
+392 1
+1110 1
+1358 1
+735 1
+1448 1
+200 1
+1548 1
+223 1
+485 1
+1514 1
+1373 1
+1124 1
+595 1
+812 1
+1208 1
+371 1
+1487 1
+1412 1
+1268 1
+1419 1
+1175 1
+515 1
+623 1
+1178 1
+1534 1
+1377 1
+1550 1
+519 1
+942 1
+590 1
+351 1
+916 1
+1642 1
+1665 1
+206 1
+1071 1
+1258 1
+790 1
+1214 1
+58 1
+1347 1
+-1
+1341 1
+1093 1
+896 1
+1447 1
+1439 1
+306 1
+732 1
+568 1
+1673 1
+1333 1
+834 1
+93 1
+198 1
+487 1
+1460 1
+1712 1
+684 1
+1013 1
+1379 1
+1578 1
+1063 1
+100 1
+424 1
+261 1
+984 1
+139 1
+209 1
+727 1
+1530 1
+461 1
+318 1
+-1
+1104 1
+1261 1
+245 1
+1449 1
+1345 1
+791 1
+407 1
+1372 1
+1464 1
+315 1
+1660 1
+1496 1
+793 1
+124 1
+-1
+280 1
+40 1
+229 1
+389 1
+0 1
+1082 1
+118 1
+88 1
+832 1
+859 1
+1120 1
+1098 1
+1201 1
+-1
+358 1
+1668 1
+1263 1
+132 1
+256 1
+113 1
+106 1
+170 1
+1125 1
+1376 1
+682 1
+967 1
+1546 1
+1086 1
+308 1
+36 1
+133 1
+337 1
+1649 1
+449 1
+1704 1
+1267 1
+903 1
+945 1
+712 1
+947 1
+699 1
+701 1
+1391 1
+227 1
+565 1
+45 1
+110 1
+1222 1
+239 1
+1531 1
+1633 1
+625 1
+1618 1
+900 1
+557 1
+-1
+598 1
+1545 1
+-1
+1661 1
+1666 1
+212 1
+857 1
+721 1
+1083 1
+452 1
+1529 1
+1667 1
+951 1
+562 1
+1393 1
+1485 1
+1624 1
+1655 1
+348 1
+1223 1
+1024 1
+445 1
+1518 1
+41 1
+1131 1
+905 1
+597 1
+138 1
+-1
+1147 1
+871 1
+285 1
+288 1
+805 1
+850 1
+1508 1
+988 1
+1164 1
+1340 1
+3 1
+421 1
+843 1
+501 1
+1443 1
+379 1
+185 1
+1150 1
+331 1
+756 1
+16 1
+352 1
+471 1
+17 1
+234 1
+293 1
+365 1
+742 1
+1656 1
+636 1
+919 1
+1159 1
+11 1
+526 1
+105 1
+310 1
+294 1
+38 1
+84 1
+335 1
+1283 1
+409 1
+1285 1
+1582 1
+43 1
+-1
+902 1
+698 1
+1517 1
+296 1
+201 1
+778 1
+1085 1
+356 1
+990 1
+491 1
+518 1
+1153 1
+246 1
+1573 1
+115 1
+1050 1
+129 1
+1203 1
+1204 1
+440 1
+57 1
+1241 1
+631 1
+657 1
+1018 1
+744 1
+1231 1
+499 1
+1002 1
+249 1
+1156 1
+286 1
+-1
+564 1
+340 1
+-1
+1287 1
+751 1
+784 1
+1413 1
+1318 1
+62 1
+594 1
+1235 1
+813 1
+1088 1
+1504 1
+73 1
+374 1
+1030 1
+1569 1
+507 1
+1325 1
+-1
+1506 1
+349 1
+592 1
+1233 1
+932 1
+488 1
+254 1
+-1
+1240 1
+888 1
+1551 1
+1659 1
+332 1
+958 1
+343 1
+1200 1
+555 1
+1291 1
+464 1
+920 1
+1311 1
+-1
+114 1
+1696 1
+544 1
+416 1
+770 1
+482 1
+877 1
+1663 1
+1483 1
+1165 1
+1465 1
+1182 1
+1001 1
+1089 1
+827 1
+731 1
+1003 1
+1326 1
+1092 1
+803 1
+-1
+527 1
+101 1
+314 1
+262 1
+1181 1
+652 1
+1046 1
+357 1
+630 1
+478 1
+1302 1
+1619 1
+394 1
+1626 1
+626 1
+1444 1
+545 1
+8 1
+190 1
+933 1
+-1
+251 1
+130 1
+1275 1
+529 1
+420 1
+463 1
+472 1
+1184 1
+1253 1
+1457 1
+1410 1
+796 1
+369 1
+216 1
+650 1
+189 1
+1537 1
+35 1
+1351 1
+578 1
+196 1
+634 1
+1047 1
+558 1
+451 1
+1310 1
+1020 1
+1451 1
+753 1
+546 1
+68 1
+173 1
+147 1
+883 1
+66 1
+497 1
+664 1
+372 1
+508 1
+1189 1
+677 1
+-1
+716 1
+1348 1
+514 1
+602 1
+429 1
+536 1
+225 1
+934 1
+-1
+1520 1
+108 1
+758 1
+1639 1
+382 1
+339 1
+563 1
+1414 1
+1694 1
+1314 1
+700 1
+528 1
+547 1
+1574 1
+723 1
+1384 1
+289 1
+202 1
+884 1
+603 1
+496 1
+833 1
+137 1
+504 1
+1193 1
+1699 1
+448 1
+1607 1
+1027 1
+1281 1
+1489 1
+1475 1
+82 1
+755 1
+628 1
+1360 1
+870 1
+1317 1
+1616 1
+15 1
+1096 1
+218 1
+1145 1
+702 1
+1316 1
+981 1
+-1
+868 1
+641 1
+897 1
+1055 1
+1691 1
+1671 1
+591 1
+278 1
+1594 1
+465 1
+1592 1
+1421 1
+1596 1
+911 1
+1583 1
+498 1
+941 1
+1195 1
+687 1
+120 1
+102 1
+1452 1
+1029 1
+978 1
+1625 1
+1536 1
+250 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+750 1
+427 1
+1361 1
+1212 1
+839 1
+1395 1
+887 1
+257 1
+1552 1
+393 1
+1134 1
+1323 1
+996 1
+627 1
+263 1
+1528 1
+1220 1
+765 1
+1544 1
+1471 1
+1640 1
+400 1
+224 1
+302 1
+-1
+533 1
+412 1
+1100 1
+1646 1
+640 1
+531 1
+1415 1
+-1
+666 1
+552 1
+1069 1
+505 1
+220 1
+432 1
+503 1
+1067 1
+1322 1
+1198 1
+685 1
+798 1
+635 1
+385 1
+-1
+1257 1
+577 1
+238 1
+516 1
+1512 1
+1490 1
+230 1
+48 1
+674 1
+1650 1
+1597 1
+543 1
+1467 1
+1706 1
+467 1
+1353 1
+291 1
+560 1
+23 1
+410 1
+1516 1
+83 1
+644 1
+1127 1
+408 1
+1342 1
+1540 1
+570 1
+680 1
+649 1
+1690 1
+149 1
+923 1
+1515 1
+1073 1
+153 1
+705 1
+148 1
+1135 1
+462 1
+476 1
+997 1
+1028 1
+1652 1
+363 1
+-1
+502 1
+1456 1
+176 1
+1417 1
+774 1
+281 1
+1008 1
+1022 1
+1609 1
+1084 1
+646 1
+1398 1
+1557 1
+769 1
+1404 1
+1019 1
+724 1
+117 1
+1239 1
+89 1
+722 1
+1040 1
+1114 1
+992 1
+-1
+1662 1
+1130 1
+1572 1
+1049 1
+1713 1
+107 1
+1707 1
+810 1
+619 1
+1277 1
+442 1
+629 1
+1183 1
+1405 1
+1000 1
+1532 1
+1188 1
+21 1
+1541 1
+419 1
+1600 1
+1620 1
+782 1
+1237 1
+910 1
+1292 1
+193 1
+1224 1
+255 1
+194 1
+258 1
+876 1
+1137 1
+1604 1
+1670 1
+283 1
+1380 1
+1605 1
+-1
+121 1
+1494 1
+937 1
+155 1
+64 1
+1424 1
+446 1
+338 1
+890 1
+789 1
+1115 1
+891 1
+1371 1
+581 1
+1141 1
+430 1
+1533 1
+1242 1
+969 1
+569 1
+1549 1
+406 1
+1598 1
+69 1
+1202 1
+841 1
+1119 1
+483 1
+1293 1
+576 1
+659 1
+1238 1
+269 1
+695 1
+-1
+362 1
+837 1
+1386 1
+1179 1
+1634 1
+450 1
+672 1
+1705 1
+689 1
+847 1
+1177 1
+1298 1
+1366 1
+1560 1
+1243 1
+970 1
+103 1
+1505 1
+776 1
+1672 1
+12 1
+1689 1
+317 1
+1299 1
+1247 1
+609 1
+271 1
+1587 1
+1590 1
+611 1
+718 1
+1436 1
+305 1
+814 1
+1629 1
+632 1
+1166 1
+-1
+384 1
+267 1
+1269 1
+63 1
+342 1
+929 1
+761 1
+554 1
+826 1
+1568 1
+952 1
+1559 1
+240 1
+1635 1
+1290 1
+1687 1
+831 1
+862 1
+845 1
+683 1
+399 1
+443 1
+1432 1
+1066 1
+921 1
+1026 1
+1274 1
+1669 1
+971 1
+580 1
+573 1
+713 1
+387 1
+457 1
+1658 1
+587 1
+1169 1
+9 1
+1215 1
+892 1
+-1
+944 1
+561 1
+1445 1
+1129 1
+1312 1
+822 1
+-1
+987 1
+1021 1
+1278 1
+1276 1
+1157 1
+59 1
+375 1
+41 1
+447 1
+37 1
+785 1
+322 1
+819 1
+899 1
+1284 1
+1123 1
+1521 1
+1461 1
+1612 1
+972 1
+924 1
+1081 1
+1344 1
+777 1
+1437 1
+1303 1
+1259 1
+1216 1
+583 1
+1385 1
+166 1
+820 1
+-1
+662 1
+135 1
+1251 1
+1678 1
+1697 1
+729 1
+799 1
+1014 1
+586 1
+846 1
+1644 1
+1295 1
+495 1
+167 1
+169 1
+172 1
+307 1
+466 1
+606 1
+783 1
+1087 1
+551 1
+1155 1
+11 1
+-1
+143 1
+1641 1
+66 1
+323 1
+1438 1
+893 1
+1234 1
+109 1
+894 1
+844 1
+127 1
+247 1
+116 1
+414 1
+44 1
+1296 1
+1161 1
+1209 1
+999 1
+860 1
+1589 1
+982 1
+320 1
+1273 1
+1158 1
+-1
+824 1
+270 1
+-1
+1392 1
+1126 1
+579 1
+1199 1
+1429 1
+1507 1
+304 1
+6 1
+73 1
+395 1
+1539 1
+418 1
+370 1
+378 1
+468 1
+13 1
+1122 1
+1698 1
+1305 1
+78 1
+359 1
+1653 1
+1228 1
+1252 1
+651 1
+325 1
+184 1
+154 1
+333 1
+-1
+215 1
+1196 1
+671 1
+164 1
+848 1
+391 1
+65 1
+1509 1
+75 1
+426 1
+767 1
+1431 1
+95 1
+99 1
+534 1
+388 1
+804 1
+-1
+57 1
+311 1
+549 1
+1675 1
+1306 1
+875 1
+1105 1
+1442 1
+599 1
+112 1
+1702 1
+96 1
+1282 1
+123 1
+1154 1
+886 1
+1262 1
+287 1
+1602 1
+45 1
+1396 1
+-1
+438 1
+1352 1
+-1
+1586 1
+730 1
+1289 1
+55 1
+79 1
+336 1
+696 1
+852 1
+1011 1
+704 1
+917 1
+1015 1
+1525 1
+1446 1
+94 1
+56 1
+663 1
+1226 1
+1099 1
+865 1
+380 1
+622 1
+474 1
+179 1
+436 1
+54 1
+1692 1
+593 1
+1382 1
+368 1
+1420 1
+1192 1
+1610 1
+360 1
+1637 1
+25 1
+792 1
+1711 1
+743 1
+-1
+122 1
+1339 1
+773 1
+236 1
+299 1
+621 1
+1038 1
+1411 1
+1526 1
+-1
+851 1
+381 1
+787 1
+720 1
+648 1
+1171 1
+1399 1
+681 1
+1035 1
+1454 1
+1031 1
+188 1
+417 1
+500 1
+-1
+4 1
+895 1
+638 1
+1535 1
+589 1
+1613 1
+145 1
+1232 1
+126 1
+694 1
+1709 1
+361 1
+1368 1
+538 1
+541 1
+151 1
+243 1
+1217 1
+203 1
+620 1
+1364 1
+390 1
+402 1
+1041 1
+1486 1
+131 1
+354 1
+1144 1
+480 1
+1679 1
+624 1
+1680 1
+1101 1
+1403 1
+108 1
+821 1
+67 1
+1579 1
+786 1
+639 1
+861 1
+1327 1
+904 1
+1065 1
+-1
+1513 1
+807 1
+60 1
+76 1
+248 1
+675 1
+1369 1
+1078 1
+71 1
+51 1
+1603 1
+938 1
+1023 1
+-1
+943 1
+22 1
+182 1
+878 1
+18 1
+490 1
+1091 1
+85 1
+752 1
+-1
+1270 1
+264 1
+199 1
+532 1
+617 1
+1430 1
+72 1
+968 1
+1617 1
+1466 1
+540 1
+1048 1
+524 1
+800 1
+1350 1
+613 1
+656 1
+1079 1
+312 1
+1218 1
+879 1
+46 1
+1167 1
+1111 1
+1510 1
+183 1
+1567 1
+-1
+492 1
+1143 1
+907 1
+1080 1
+1354 1
+1103 1
+1012 1
+608 1
+1462 1
+759 1
+158 1
+714 1
+665 1
+260 1
+1315 1
+715 1
+226 1
+1309 1
+373 1
+1375 1
+655 1
+1336 1
+-1
+1180 1
+1095 1
+1628 1
+772 1
+880 1
+817 1
+835 1
+828 1
+559 1
+1522 1
+456 1
+1213 1
+144 1
+936 1
+754 1
+165 1
+253 1
+-1
+1229 1
+1355 1
+957 1
+210 1
+889 1
+1463 1
+-1
+1094 1
+1647 1
+433 1
+214 1
+678 1
+290 1
+10 1
+768 1
+946 1
+301 1
+1701 1
+1210 1
+1337 1
+815 1
+1394 1
+1519 1
+994 1
+1468 1
+68 1
+976 1
+1172 1
+881 1
+327 1
+928 1
+667 1
+1558 1
+353 1
+1250 1
+1388 1
+1524 1
+91 1
+1657 1
+1009 1
+676 1
+208 1
+1363 1
+1651 1
+-1
+142 1
+1256 1
+423 1
+1470 1
+1425 1
+692 1
+217 1
+252 1
+1075 1
+802 1
+454 1
+344 1
+915 1
+1523 1
+863 1
+1301 1
+542 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+654 1
+981 1
+275 1
+571 1
+1699 1
+712 1
+882 1
+328 1
+1207 1
+216 1
+111 1
+1016 1
+1044 1
+527 1
+564 1
+962 1
+668 1
+1096 1
+630 1
+1452 1
+1074 1
+1184 1
+332 1
+-1
+178 1
+1328 1
+1416 1
+1631 1
+343 1
+1616 1
+219 1
+1170 1
+329 1
+1195 1
+1208 1
+404 1
+1185 1
+-1
+452 1
+1538 1
+159 1
+1319 1
+838 1
+1223 1
+-1
+1064 1
+703 1
+922 1
+324 1
+1153 1
+1125 1
+1716 1
+1607 1
+1097 1
+1173 1
+669 1
+1266 1
+1211 1
+289 1
+631 1
+249 1
+37 1
+725 1
+403 1
+308 1
+941 1
+988 1
+5 1
+486 1
+-1
+221 1
+274 1
+1530 1
+1186 1
+1492 1
+196 1
+614 1
+623 1
+1511 1
+1061 1
+870 1
+701 1
+350 1
+1264 1
+1717 1
+233 1
+1124 1
+206 1
+633 1
+1182 1
+1349 1
+239 1
+382 1
+636 1
+1428 1
+565 1
+1378 1
+1146 1
+930 1
+647 1
+1001 1
+24 1
+394 1
+993 1
+1106 1
+517 1
+707 1
+958 1
+132 1
+1659 1
+-1
+459 1
+439 1
+1547 1
+170 1
+1737 1
+70 1
+1191 1
+1406 1
+1688 1
+960 1
+241 1
+494 1
+1487 1
+788 1
+634 1
+744 1
+1286 1
+1356 1
+-1
+1736 1
+478 1
+995 1
+1409 1
+832 1
+161 1
+484 1
+195 1
+1542 1
+1187 1
+481 1
+392 1
+-1
+652 1
+137 1
+643 1
+1738 1
+927 1
+762 1
+1401 1
+174 1
+686 1
+40 1
+1294 1
+856 1
+615 1
+708 1
+15 1
+1077 1
+1534 1
+1674 1
+351 1
+911 1
+1464 1
+869 1
+900 1
+1606 1
+1120 1
+555 1
+1013 1
+572 1
+222 1
+268 1
+-1
+1412 1
+1686 1
+1253 1
+877 1
+734 1
+1739 1
+1753 1
+413 1
+1566 1
+520 1
+1347 1
+485 1
+673 1
+1531 1
+62 1
+1113 1
+1656 1
+1695 1
+1034 1
+709 1
+0 1
+964 1
+688 1
+1480 1
+575 1
+950 1
+1190 1
+906 1
+1476 1
+168 1
+335 1
+1020 1
+1608 1
+955 1
+128 1
+607 1
+1472 1
+507 1
+463 1
+1423 1
+888 1
+372 1
+1565 1
+1740 1
+152 1
+1285 1
+-1
+1493 1
+1056 1
+940 1
+171 1
+1583 1
+979 1
+660 1
+1721 1
+280 1
+355 1
+898 1
+491 1
+1400 1
+1148 1
+1495 1
+1407 1
+220 1
+1556 1
+991 1
+296 1
+1121 1
+508 1
+464 1
+1433 1
+582 1
+905 1
+871 1
+1359 1
+584 1
+1300 1
+288 1
+1310 1
+1311 1
+87 1
+1402 1
+1189 1
+717 1
+1474 1
+-1
+493 1
+650 1
+1489 1
+294 1
+1329 1
+131 1
+45 1
+1082 1
+1434 1
+585 1
+1457 1
+1562 1
+1214 1
+954 1
+1563 1
+306 1
+1139 1
+548 1
+434 1
+578 1
+1175 1
+1287 1
+119 1
+1723 1
+21 1
+1162 1
+98 1
+1408 1
+1469 1
+-1
+1027 1
+169 1
+758 1
+1691 1
+1696 1
+727 1
+1543 1
+1573 1
+114 1
+1235 1
+1498 1
+1258 1
+1281 1
+1043 1
+1029 1
+1201 1
+386 1
+605 1
+106 1
+130 1
+519 1
+81 1
+1116 1
+1665 1
+1271 1
+1743 1
+1222 1
+932 1
+501 1
+916 1
+1302 1
+1109 1
+998 1
+1593 1
+-1
+352 1
+1591 1
+141 1
+1313 1
+823 1
+1724 1
+1272 1
+1150 1
+286 1
+-1
+567 1
+1418 1
+760 1
+1550 1
+99 1
+728 1
+1254 1
+43 1
+748 1
+346 1
+1108 1
+254 1
+20 1
+557 1
+-1
+1083 1
+934 1
+1227 1
+1279 1
+1255 1
+498 1
+1595 1
+211 1
+684 1
+120 1
+104 1
+1331 1
+504 1
+733 1
+1164 1
+313 1
+379 1
+770 1
+1050 1
+397 1
+-1
+46 1
+303 1
+731 1
+918 1
+563 1
+1391 1
+670 1
+1133 1
+1030 1
+1085 1
+489 1
+257 1
+25 1
+1381 1
+80 1
+829 1
+331 1
+1654 1
+1599 1
+431 1
+945 1
+265 1
+896 1
+204 1
+1332 1
+825 1
+1348 1
+849 1
+775 1
+796 1
+1047 1
+1333 1
+58 1
+1128 1
+396 1
+1700 1
+234 1
+1233 1
+1163 1
+521 1
+1325 1
+947 1
+1756 1
+48 1
+158 1
+757 1
+679 1
+1414 1
+-1
+63 1
+1025 1
+794 1
+186 1
+1370 1
+1071 1
+1003 1
+1314 1
+420 1
+1372 1
+1377 1
+726 1
+989 1
+1225 1
+1059 1
+1219 1
+843 1
+833 1
+1351 1
+202 1
+514 1
+1585 1
+261 1
+47 1
+14 1
+316 1
+209 1
+951 1
+913 1
+244 1
+1249 1
+298 1
+645 1
+853 1
+428 1
+781 1
+966 1
+1176 1
+742 1
+1326 1
+-1
+813 1
+477 1
+858 1
+180 1
+1622 1
+1145 1
+597 1
+903 1
+657 1
+366 1
+1107 1
+1561 1
+1748 1
+953 1
+1536 1
+133 1
+977 1
+1435 1
+874 1
+1682 1
+1473 1
+1694 1
+-1
+1648 1
+1241 1
+506 1
+1390 1
+1527 1
+376 1
+77 1
+535 1
+455 1
+227 1
+1413 1
+461 1
+1275 1
+1033 1
+1324 1
+134 1
+192 1
+1615 1
+1057 1
+1749 1
+282 1
+965 1
+124 1
+1465 1
+1703 1
+437 1
+1248 1
+933 1
+980 1
+855 1
+102 1
+1666 1
+49 1
+1488 1
+1357 1
+1667 1
+185 1
+337 1
+756 1
+735 1
+300 1
+8 1
+1601 1
+779 1
+1138 1
+-1
+711 1
+223 1
+-1
+1529 1
+101 1
+885 1
+-1
+19 1
+1450 1
+-1
+884 1
+967 1
+1036 1
+1367 1
+1508 1
+1761 1
+691 1
+173 1
+883 1
+367 1
+908 1
+1673 1
+1576 1
+562 1
+1731 1
+276 1
+803 1
+1642 1
+146 1
+345 1
+1151 1
+1230 1
+7 1
+1052 1
+-1
+1594 1
+1149 1
+-1
+1387 1
+1174 1
+-1
+601 1
+1633 1
+-1
+1503 1
+51 1
+-1
+797 1
+50 1
+-1
+1194 1
+1335 1
+-1
+604 1
+2 1
+-1
+1297 1
+973 1
+-1
+187 1
+292 1
+-1
+1677 1
+949 1
+-1
+44 1
+1448 1
+-1
+1671 1
+566 1
+-1
+197 1
+364 1
+-1
+866 1
+706 1
+-1
+309 1
+763 1
+-1
+100 1
+897 1
+-1
+1485 1
+374 1
+-1
+1727 1
+389 1
+-1
+191 1
+319 1
+448 1
+-1
+340 1
+326 1
+-1
+1260 1
+1708 1
+-1
+1627 1
+1732 1
+-1
+547 1
+805 1
+-1
+469 1
+59 1
+1206 1
+-1
+1032 1
+377 1
+509 1
+-1
+88 1
+1514 1
+-1
+1165 1
+830 1
+-1
+1683 1
+1575 1
+-1
+857 1
+1142 1
+1362 1
+-1
+1046 1
+34 1
+-1
+1010 1
+766 1
+-1
+472 1
+175 1
+-1
+1764 1
+628 1
+-1
+1054 1
+978 1
+-1
+1203 1
+499 1
+-1
+1762 1
+818 1
+-1
+925 1
+262 1
+-1
+1320 1
+349 1
+-1
+935 1
+277 1
+-1
+746 1
+1231 1
+-1
+449 1
+574 1
+682 1
+816 1
+842 1
+1569 1
+-1
+1426 1
+1427 1
+-1
+207 1
+1596 1
+-1
+471 1
+1578 1
+-1
+1068 1
+1131 1
+-1
+1518 1
+591 1
+-1
+1710 1
+745 1
+-1
+784 1
+653 1
+1393 1
+1419 1
+1092 1
+229 1
+723 1
+626 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+1555 1
+424 1
+108 1
+790 1
+587 1
+1289 1
+827 1
+35 1
+1345 1
+526 1
+915 1
+1425 1
+1612 1
+510 1
+592 1
+1758 1
+495 1
+1084 1
+1243 1
+559 1
+-1
+1361 1
+414 1
+1040 1
+1069 1
+984 1
+792 1
+1196 1
+263 1
+1273 1
+109 1
+946 1
+1038 1
+695 1
+1679 1
+1048 1
+1157 1
+-1
+430 1
+608 1
+1598 1
+1735 1
+651 1
+982 1
+-1
+86 1
+1197 1
+208 1
+1577 1
+1093 1
+3 1
+226 1
+1242 1
+641 1
+749 1
+1154 1
+1341 1
+1100 1
+67 1
+1098 1
+1102 1
+1160 1
+1031 1
+1579 1
+290 1
+985 1
+1614 1
+1712 1
+406 1
+121 1
+160 1
+525 1
+1263 1
+458 1
+-1
+659 1
+609 1
+37 1
+93 1
+850 1
+88 1
+1655 1
+1384 1
+1198 1
+1306 1
+76 1
+1445 1
+715 1
+1540 1
+267 1
+194 1
+1404 1
+1645 1
+642 1
+1421 1
+264 1
+1188 1
+1042 1
+110 1
+217 1
+412 1
+281 1
+804 1
+1379 1
+246 1
+189 1
+295 1
+-1
+1625 1
+666 1
+822 1
+678 1
+648 1
+1690 1
+1276 1
+227 1
+298 1
+859 1
+450 1
+1363 1
+926 1
+738 1
+697 1
+97 1
+617 1
+1265 1
+522 1
+512 1
+251 1
+135 1
+836 1
+405 1
+1295 1
+342 1
+1141 1
+806 1
+1618 1
+1086 1
+215 1
+999 1
+1386 1
+411 1
+1389 1
+1055 1
+920 1
+961 1
+440 1
+344 1
+683 1
+649 1
+-1
+1446 1
+674 1
+713 1
+239 1
+944 1
+1609 1
+861 1
+243 1
+875 1
+137 1
+690 1
+658 1
+1018 1
+868 1
+1461 1
+278 1
+-1
+1221 1
+312 1
+1000 1
+687 1
+1692 1
+580 1
+1062 1
+1417 1
+-1
+1641 1
+553 1
+810 1
+148 1
+1298 1
+153 1
+1101 1
+22 1
+256 1
+1422 1
+482 1
+441 1
+685 1
+1535 1
+655 1
+860 1
+241 1
+375 1
+1415 1
+1467 1
+166 1
+1611 1
+1346 1
+1420 1
+1720 1
+279 1
+68 1
+1321 1
+1229 1
+1635 1
+1517 1
+589 1
+240 1
+817 1
+719 1
+1693 1
+1763 1
+-1
+193 1
+370 1
+1490 1
+1580 1
+117 1
+1210 1
+1228 1
+1680 1
+1477 1
+1178 1
+371 1
+689 1
+1284 1
+1709 1
+656 1
+1466 1
+5 1
+244 1
+1571 1
+1205 1
+1005 1
+66 1
+44 1
+41 1
+919 1
+163 1
+714 1
+1649 1
+959 1
+772 1
+588 1
+616 1
+716 1
+150 1
+1496 1
+824 1
+1704 1
+453 1
+1685 1
+986 1
+-1
+1024 1
+1026 1
+1339 1
+155 1
+1528 1
+1244 1
+1741 1
+692 1
+1232 1
+1701 1
+618 1
+983 1
+1581 1
+82 1
+407 1
+661 1
+284 1
+1132 1
+1058 1
+942 1
+1136 1
+826 1
+322 1
+852 1
+799 1
+136 1
+1632 1
+753 1
+1440 1
+460 1
+1491 1
+974 1
+912 1
+199 1
+151 1
+188 1
+639 1
+113 1
+465 1
+1245 1
+1564 1
+1626 1
+718 1
+663 1
+179 1
+1702 1
+-1
+156 1
+415 1
+1292 1
+1087 1
+1368 1
+1613 1
+198 1
+162 1
+-1
+456 1
+1200 1
+736 1
+1637 1
+1246 1
+1317 1
+1065 1
+1318 1
+524 1
+-1
+497 1
+1454 1
+487 1
+1002 1
+1590 1
+183 1
+931 1
+384 1
+923 1
+914 1
+333 1
+720 1
+671 1
+1155 1
+1172 1
+1646 1
+231 1
+539 1
+1366 1
+1672 1
+963 1
+429 1
+747 1
+65 1
+40 1
+25 1
+812 1
+1004 1
+1410 1
+1481 1
+1240 1
+1304 1
+36 1
+1443 1
+273 1
+722 1
+78 1
+672 1
+851 1
+1322 1
+696 1
+-1
+831 1
+939 1
+1 1
+1587 1
+573 1
+791 1
+1118 1
+821 1
+1088 1
+901 1
+11 1
+976 1
+115 1
+1274 1
+18 1
+492 1
+291 1
+1441 1
+438 1
+558 1
+956 1
+157 1
+1745 1
+1754 1
+287 1
+724 1
+385 1
+1288 1
+242 1
+1447 1
+1513 1
+1726 1
+1269 1
+1512 1
+314 1
+1063 1
+990 1
+795 1
+91 1
+283 1
+837 1
+-1
+1308 1
+1636 1
+1334 1
+1111 1
+1076 1
+1283 1
+212 1
+1478 1
+1482 1
+252 1
+365 1
+594 1
+1444 1
+1451 1
+698 1
+270 1
+1506 1
+236 1
+1134 1
+528 1
+1746 1
+1755 1
+743 1
+323 1
+681 1
+75 1
+71 1
+928 1
+767 1
+1554 1
+-1
+840 1
+1226 1
+1644 1
+218 1
+315 1
+629 1
+1105 1
+1315 1
+551 1
+909 1
+778 1
+-1
+255 1
+839 1
+201 1
+1500 1
+1070 1
+1257 1
+811 1
+1453 1
+780 1
+801 1
+1449 1
+378 1
+637 1
+1156 1
+664 1
+1747 1
+8 1
+750 1
+544 1
+387 1
+1045 1
+200 1
+1551 1
+700 1
+339 1
+552 1
+1067 1
+1006 1
+996 1
+1471 1
+1484 1
+1019 1
+1177 1
+1455 1
+57 1
+902 1
+593 1
+1114 1
+1628 1
+-1
+190 1
+1483 1
+225 1
+771 1
+307 1
+1600 1
+1620 1
+1130 1
+873 1
+752 1
+353 1
+783 1
+1166 1
+556 1
+90 1
+880 1
+854 1
+1552 1
+-1
+1140 1
+834 1
+-1
+620 1
+421 1
+1360 1
+948 1
+181 1
+693 1
+235 1
+60 1
+1501 1
+554 1
+1171 1
+1051 1
+1458 1
+1365 1
+1553 1
+418 1
+383 1
+299 1
+1144 1
+694 1
+992 1
+1035 1
+754 1
+729 1
+63 1
+-1
+1053 1
+1456 1
+600 1
+475 1
+1137 1
+1183 1
+398 1
+444 1
+1072 1
+793 1
+1438 1
+177 1
+899 1
+530 1
+1303 1
+1502 1
+1261 1
+1475 1
+536 1
+1676 1
+1075 1
+1687 1
+1090 1
+74 1
+1459 1
+598 1
+1392 1
+419 1
+975 1
+1664 1
+9 1
+1668 1
+730 1
+1336 1
+-1
+800 1
+172 1
+149 1
+390 1
+95 1
+176 1
+1104 1
+445 1
+1730 1
+635 1
+79 1
+245 1
+1159 1
+232 1
+904 1
+327 1
+537 1
+583 1
+1239 1
+1330 1
+808 1
+1089 1
+228 1
+402 1
+1112 1
+-1
+550 1
+435 1
+-1
+249 1
+1675 1
+1008 1
+77 1
+286 1
+373 1
+516 1
+391 1
+1012 1
+1296 1
+1168 1
+348 1
+-1
+610 1
+369 1
+1572 1
+473 1
+776 1
+-1
+1122 1
+258 1
+577 1
+621 1
+85 1
+1342 1
+0 1
+545 1
+1760 1
+1060 1
+1505 1
+1504 1
+590 1
+1751 1
+213 1
+230 1
+1037 1
+1015 1
+1270 1
+1099 1
+238 1
+625 1
+611 1
+1623 1
+765 1
+423 1
+1011 1
+-1
+1436 1
+301 1
+399 1
+764 1
+203 1
+1293 1
+1238 1
+211 1
+1548 1
+1733 1
+644 1
+586 1
+38 1
+677 1
+1167 1
+1661 1
+546 1
+1752 1
+1549 1
+1094 1
+69 1
+1662 1
+-1
+1750 1
+470 1
+721 1
+468 1
+1638 1
+1713 1
+1643 1
+-1
+937 1
+1343 1
+1439 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+1224 1
+1518 1
+346 1
+451 1
+1309 1
+803 1
+900 1
+962 1
+1734 1
+646 1
+1222 1
+918 1
+1264 1
+100 1
+533 1
+922 1
+763 1
+710 1
+83 1
+1715 1
+14 1
+1092 1
+853 1
+-1
+711 1
+1184 1
+830 1
+935 1
+1215 1
+3 1
+1761 1
+857 1
+426 1
+294 1
+1418 1
+679 1
+452 1
+1041 1
+1476 1
+1191 1
+1689 1
+1756 1
+366 1
+584 1
+1266 1
+1267 1
+1533 1
+1678 1
+601 1
+1025 1
+647 1
+1113 1
+1332 1
+1348 1
+1762 1
+1402 1
+987 1
+560 1
+116 1
+504 1
+427 1
+401 1
+224 1
+-1
+802 1
+675 1
+917 1
+1023 1
+330 1
+1236 1
+1325 1
+1014 1
+296 1
+1230 1
+187 1
+-1
+1285 1
+1667 1
+1275 1
+92 1
+128 1
+143 1
+960 1
+565 1
+4 1
+1039 1
+511 1
+250 1
+1181 1
+408 1
+432 1
+773 1
+643 1
+1299 1
+464 1
+1106 1
+122 1
+1503 1
+702 1
+921 1
+1095 1
+340 1
+358 1
+1036 1
+449 1
+1279 1
+1231 1
+1189 1
+1519 1
+950 1
+557 1
+908 1
+1531 1
+1376 1
+1259 1
+297 1
+1718 1
+-1
+1527 1
+1128 1
+1187 1
+1468 1
+633 1
+1255 1
+1537 1
+433 1
+319 1
+1617 1
+866 1
+35 1
+807 1
+1634 1
+-1
+123 1
+145 1
+1465 1
+930 1
+924 1
+1049 1
+667 1
+1281 1
+1248 1
+739 1
+1110 1
+1340 1
+372 1
+499 1
+1131 1
+403 1
+605 1
+1406 1
+480 1
+758 1
+1589 1
+-1
+1029 1
+654 1
+386 1
+517 1
+742 1
+1703 1
+596 1
+442 1
+1286 1
+127 1
+770 1
+775 1
+-1
+823 1
+1448 1
+15 1
+547 1
+1492 1
+318 1
+1588 1
+1234 1
+396 1
+1592 1
+1546 1
+796 1
+1050 1
+829 1
+568 1
+1624 1
+1697 1
+734 1
+1147 1
+345 1
+785 1
+1757 1
+1078 1
+1133 1
+170 1
+501 1
+756 1
+1214 1
+876 1
+979 1
+1202 1
+751 1
+144 1
+1344 1
+1739 1
+1350 1
+-1
+856 1
+1108 1
+455 1
+991 1
+1493 1
+169 1
+1353 1
+6 1
+701 1
+1708 1
+248 1
+717 1
+469 1
+1485 1
+1271 1
+1158 1
+1698 1
+1161 1
+1516 1
+112 1
+657 1
+328 1
+585 1
+1056 1
+668 1
+1142 1
+507 1
+428 1
+489 1
+1081 1
+446 1
+638 1
+197 1
+376 1
+1488 1
+1497 1
+599 1
+869 1
+-1
+1109 1
+1570 1
+878 1
+154 1
+380 1
+381 1
+1388 1
+514 1
+1052 1
+662 1
+34 1
+1272 1
+555 1
+1124 1
+1091 1
+1722 1
+89 1
+1494 1
+1153 1
+1480 1
+1409 1
+134 1
+491 1
+1054 1
+80 1
+911 1
+1059 1
+334 1
+21 1
+634 1
+1543 1
+636 1
+686 1
+182 1
+518 1
+1742 1
+788 1
+1530 1
+394 1
+1599 1
+1584 1
+1152 1
+787 1
+903 1
+285 1
+462 1
+1170 1
+-1
+58 1
+1593 1
+219 1
+138 1
+64 1
+1462 1
+862 1
+343 1
+591 1
+766 1
+1021 1
+1254 1
+1529 1
+508 1
+1022 1
+1743 1
+471 1
+103 1
+1301 1
+1547 1
+1207 1
+254 1
+940 1
+1311 1
+311 1
+748 1
+1550 1
+1125 1
+1486 1
+214 1
+1199 1
+1721 1
+457 1
+247 1
+229 1
+1597 1
+952 1
+1209 1
+490 1
+488 1
+389 1
+-1
+1359 1
+505 1
+1411 1
+422 1
+125 1
+578 1
+129 1
+1744 1
+210 1
+257 1
+16 1
+55 1
+410 1
+409 1
+769 1
+161 1
+1473 1
+-1
+1705 1
+416 1
+627 1
+502 1
+379 1
+303 1
+725 1
+1595 1
+1351 1
+835 1
+23 1
+19 1
+1569 1
+1499 1
+7 1
+1252 1
+1396 1
+527 1
+126 1
+1716 1
+564 1
+1119 1
+269 1
+947 1
+523 1
+871 1
+858 1
+1356 1
+680 1
+261 1
+-1
+1314 1
+139 1
+260 1
+205 1
+147 1
+1647 1
+266 1
+180 1
+-1
+989 1
+1349 1
+779 1
+1759 1
+503 1
+431 1
+953 1
+732 1
+1413 1
+1538 1
+500 1
+361 1
+513 1
+81 1
+1064 1
+1367 1
+1732 1
+1573 1
+1326 1
+221 1
+331 1
+85 1
+65 1
+179 1
+82 1
+113 1
+121 1
+669 1
+1694 1
+1736 1
+786 1
+-1
+377 1
+265 1
+1541 1
+355 1
+1706 1
+20 1
+1338 1
+744 1
+192 1
+437 1
+1663 1
+324 1
+439 1
+1277 1
+1211 1
+37 1
+1179 1
+1180 1
+1291 1
+741 1
+1117 1
+-1
+1256 1
+1398 1
+1370 1
+1163 1
+1460 1
+1615 1
+595 1
+271 1
+731 1
+855 1
+1316 1
+630 1
+1320 1
+520 1
+223 1
+704 1
+1290 1
+268 1
+72 1
+1640 1
+1657 1
+1728 1
+816 1
+1225 1
+1139 1
+-1
+735 1
+882 1
+-1
+1469 1
+47 1
+841 1
+1385 1
+17 1
+1711 1
+768 1
+813 1
+1681 1
+515 1
+1442 1
+185 1
+1164 1
+874 1
+336 1
+-1
+945 1
+1619 1
+496 1
+660 1
+1328 1
+705 1
+262 1
+1740 1
+73 1
+879 1
+263 1
+1514 1
+367 1
+612 1
+1307 1
+632 1
+988 1
+349 1
+300 1
+293 1
+865 1
+755 1
+382 1
+104 1
+958 1
+1583 1
+483 1
+1371 1
+1381 1
+1707 1
+1691 1
+-1
+1369 1
+688 1
+1250 1
+461 1
+682 1
+1268 1
+541 1
+1405 1
+993 1
+397 1
+1127 1
+94 1
+814 1
+566 1
+388 1
+815 1
+1684 1
+1143 1
+1233 1
+951 1
+535 1
+927 1
+673 1
+111 1
+302 1
+782 1
+1387 1
+571 1
+316 1
+1071 1
+53 1
+62 1
+1585 1
+-1
+759 1
+1710 1
+-1
+38 1
+936 1
+1658 1
+521 1
+549 1
+354 1
+1669 1
+1374 1
+347 1
+570 1
+576 1
+1146 1
+1217 1
+1545 1
+481 1
+486 1
+1033 1
+1582 1
+1358 1
+1213 1
+106 1
+1057 1
+1393 1
+1671 1
+309 1
+1520 1
+1074 1
+1174 1
+1450 1
+1536 1
+1327 1
+84 1
+1621 1
+1193 1
+818 1
+761 1
+877 1
+-1
+1463 1
+1216 1
+96 1
+1568 1
+1001 1
+572 1
+980 1
+567 1
+1237 1
+209 1
+1123 1
+44 1
+1194 1
+1258 1
+1487 1
+619 1
+863 1
+36 1
+1364 1
+1077 1
+1629 1
+1027 1
+1403 1
+1416 1
+-1
+1472 1
+476 1
+467 1
+1457 1
+1507 1
+934 1
+220 1
+237 1
+-1
+1380 1
+887 1
+292 1
+1683 1
+883 1
+107 1
+994 1
+393 1
+1670 1
+1498 1
+1656 1
+1260 1
+1631 1
+368 1
+359 1
+67 1
+1373 1
+1714 1
+1544 1
+164 1
+1085 1
+68 1
+165 1
+1423 1
+1176 1
+167 1
+604 1
+178 1
+650 1
+42 1
+1639 1
+1017 1
+797 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+1391 1
+1015 1
+915 1
+356 1
+-1
+12 1
+929 1
+810 1
+1642 1
+1379 1
+1341 1
+1421 1
+1451 1
+255 1
+956 1
+51 1
+289 1
+1065 1
+1741 1
+600 1
+1101 1
+1280 1
+1212 1
+136 1
+475 1
+767 1
+1466 1
+405 1
+789 1
+327 1
+378 1
+706 1
+884 1
+1397 1
+215 1
+1024 1
+1076 1
+799 1
+798 1
+216 1
+392 1
+1727 1
+101 1
+613 1
+313 1
+124 1
+838 1
+1641 1
+1005 1
+1614 1
+-1
+375 1
+1758 1
+1675 1
+1185 1
+338 1
+1382 1
+1509 1
+1331 1
+645 1
+1548 1
+406 1
+-1
+1218 1
+1512 1
+1238 1
+4 1
+1523 1
+1467 1
+420 1
+326 1
+278 1
+554 1
+241 1
+171 1
+737 1
+794 1
+1676 1
+1116 1
+1186 1
+1760 1
+1247 1
+629 1
+808 1
+1365 1
+226 1
+305 1
+561 1
+1392 1
+487 1
+687 1
+1160 1
+1282 1
+538 1
+885 1
+-1
+860 1
+351 1
+805 1
+1030 1
+506 1
+130 1
+1653 1
+2 1
+1696 1
+1306 1
+552 1
+22 1
+635 1
+1363 1
+335 1
+1114 1
+492 1
+700 1
+1035 1
+1276 1
+1618 1
+983 1
+1097 1
+175 1
+1007 1
+1103 1
+534 1
+295 1
+243 1
+23 1
+196 1
+727 1
+1508 1
+670 1
+118 1
+1104 1
+1719 1
+873 1
+637 1
+653 1
+-1
+418 1
+1136 1
+0 1
+1668 1
+1130 1
+1672 1
+448 1
+495 1
+1107 1
+18 1
+831 1
+181 1
+780 1
+1312 1
+943 1
+592 1
+415 1
+1294 1
+1666 1
+1249 1
+284 1
+800 1
+954 1
+132 1
+1245 1
+1400 1
+-1
+1598 1
+1692 1
+141 1
+905 1
+1404 1
+436 1
+1010 1
+1026 1
+90 1
+859 1
+307 1
+639 1
+1055 1
+1355 1
+663 1
+581 1
+531 1
+497 1
+-1
+738 1
+920 1
+1571 1
+714 1
+822 1
+342 1
+1649 1
+593 1
+1510 1
+1120 1
+1315 1
+1073 1
+159 1
+1297 1
+981 1
+931 1
+1422 1
+1253 1
+926 1
+753 1
+133 1
+854 1
+1693 1
+-1
+997 1
+575 1
+1414 1
+1410 1
+1505 1
+1220 1
+542 1
+1461 1
+91 1
+1407 1
+485 1
+1408 1
+281 1
+1008 1
+1072 1
+1652 1
+510 1
+582 1
+1542 1
+616 1
+1308 1
+1456 1
+1300 1
+1688 1
+274 1
+1342 1
+333 1
+43 1
+1082 1
+707 1
+1043 1
+-1
+1724 1
+1496 1
+272 1
+321 1
+146 1
+162 1
+648 1
+92 1
+651 1
+1660 1
+913 1
+463 1
+391 1
+833 1
+512 1
+86 1
+1628 1
+740 1
+1148 1
+-1
+1586 1
+655 1
+1655 1
+626 1
+628 1
+1302 1
+1084 1
+1444 1
+14 1
+1310 1
+63 1
+290 1
+168 1
+40 1
+1702 1
+712 1
+267 1
+608 1
+1401 1
+1354 1
+609 1
+259 1
+1532 1
+454 1
+163 1
+909 1
+211 1
+661 1
+806 1
+-1
+912 1
+1339 1
+828 1
+1610 1
+923 1
+1749 1
+519 1
+614 1
+516 1
+677 1
+995 1
+1149 1
+412 1
+699 1
+494 1
+726 1
+435 1
+1712 1
+291 1
+621 1
+622 1
+820 1
+45 1
+1048 1
+1221 1
+1337 1
+1384 1
+-1
+1567 1
+1182 1
+1594 1
+666 1
+540 1
+25 1
+665 1
+-1
+733 1
+955 1
+-1
+360 1
+574 1
+-1
+1352 1
+1602 1
+1061 1
+1479 1
+1566 1
+618 1
+652 1
+743 1
+715 1
+-1
+438 1
+1313 1
+1333 1
+-1
+337 1
+1273 1
+-1
+71 1
+1478 1
+-1
+723 1
+1262 1
+-1
+1539 1
+149 1
+-1
+1470 1
+1574 1
+-1
+875 1
+186 1
+-1
+1528 1
+1644 1
+-1
+942 1
+1232 1
+-1
+1725 1
+1201 1
+-1
+868 1
+674 1
+-1
+1334 1
+1278 1
+-1
+306 1
+1453 1
+-1
+784 1
+957 1
+-1
+273 1
+120 1
+-1
+398 1
+1603 1
+944 1
+-1
+522 1
+17 1
+-1
+1151 1
+1362 1
+-1
+625 1
+1575 1
+-1
+536 1
+1500 1
+-1
+1075 1
+961 1
+-1
+685 1
+1417 1
+-1
+821 1
+1200 1
+-1
+1577 1
+750 1
+199 1
+-1
+299 1
+1172 1
+1646 1
+-1
+201 1
+56 1
+-1
+1240 1
+1012 1
+-1
+1154 1
+1274 1
+-1
+1060 1
+559 1
+-1
+708 1
+332 1
+-1
+709 1
+1526 1
+1203 1
+-1
+1324 1
+1596 1
+-1
+363 1
+1046 1
+-1
+9 1
+60 1
+-1
+97 1
+1162 1
+-1
+530 1
+681 1
+-1
+1576 1
+690 1
+-1
+387 1
+692 1
+-1
+978 1
+1357 1
+-1
+1464 1
+1717 1
+498 1
+1171 1
+1317 1
+-1
+631 1
+1319 1
+-1
+1042 1
+314 1
+-1
+443 1
+939 1
+-1
+1188 1
+1345 1
+-1
+447 1
+55 1
+-1
+793 1
+1591 1
+-1
+1150 1
+1067 1
+-1
+1481 1
+778 1
+-1
+194 1
+1625 1
+-1
+832 1
+1395 1
+1605 1
+-1
+1386 1
+664 1
+-1
+984 1
+774 1
+87 1
+395 1
+474 1
+350 1
+539 1
+683 1
+1704 1
+693 1
+7 1
+1190 1
+999 1
+550 1
+119 1
+1062 1
+76 1
+771 1
+1441 1
+459 1
+456 1
+222 1
+1058 1
+678 1
+1013 1
+615 1
+684 1
+8 1
+232 1
+202 1
+1578 1
+1038 1
+166 1
+1257 1
+479 1
+1263 1
+1606 1
+781 1
+902 1
+606 1
+1169 1
+117 1
+62 1
+154 1
+1587 1
+148 1
+556 1
+996 1
+1070 1
+1346 1
+1068 1
+1616 1
+41 1
+116 1
+417 1
+1003 1
+264 1
+310 1
+1204 1
+998 1
+1292 1
+78 1
+322 1
+183 1
+229 1
+203 1
+1501 1
+1737 1
+369 1
+105 1
+1535 1
+1729 1
+569 1
+1126 1
+217 1
+730 1
+1484 1
+1607 1
+48 1
+1522 1
+1534 1
+93 1
+1053 1
+728 1
+160 1
+424 1
+1011 1
+95 1
+1623 1
+1165 1
+1673 1
+783 1
+1330 1
+1270 1
+1329 1
+949 1
+280 1
+880 1
+233 1
+526 1
+341 1
+819 1
+-1
+184 1
+204 1
+1633 1
+323 1
+718 1
+1608 1
+15 1
+1437 1
+1145 1
+225 1
+49 1
+11 1
+235 1
+1016 1
+69 1
+1298 1
+916 1
+938 1
+173 1
+66 1
+1726 1
+1173 1
+-1
+573 1
+1080 1
+1674 1
+932 1
+589 1
+703 1
+602 1
+1651 1
+1632 1
+108 1
+371 1
+1004 1
+1504 1
+545 1
+886 1
+206 1
+597 1
+1731 1
+1521 1
+88 1
+1513 1
+50 1
+236 1
+588 1
+1141 1
+150 1
+325 1
+736 1
+904 1
+365 1
+1661 1
+1609 1
+1051 1
+1730 1
+580 1
+1228 1
+58 1
+603 1
+1028 1
+1098 1
+-1
+640 1
+468 1
+1159 1
+1323 1
+1083 1
+1377 1
+423 1
+1018 1
+1047 1
+142 1
+344 1
+440 1
+1105 1
+617 1
+478 1
+445 1
+959 1
+1439 1
+757 1
+1241 1
+98 1
+907 1
+623 1
+1622 1
+1045 1
+-1
+1630 1
+698 1
+548 1
+1132 1
+1175 1
+583 1
+172 1
+795 1
+110 1
+720 1
+1251 1
+1208 1
+543 1
+249 1
+1144 1
+187 1
+671 1
+384 1
+525 1
+24 1
+1390 1
+1192 1
+1399 1
+1019 1
+1659 1
+777 1
+881 1
+1020 1
+99 1
+910 1
+948 1
+114 1
+1491 1
+1645 1
+373 1
+1735 1
+598 1
+824 1
+1304 1
+1495 1
+1699 1
+444 1
+-1
+188 1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+-1
+400 1
+1207 1
--- /dev/null
+++ b/tests/4/output
@@ -1,0 +1,24 @@
+Extents testextents n 9 lowest (400 400 1) lru (1207 1207 1) nlru 2
+by blkno:
+400 400 1
+613 618 6
+884 900 17
+961 976 16
+1207 1207 1
+1425 1437 13
+1550 1564 15
+1605 1610 6
+1760 8388607 8386848
+by size:
+400 400 1
+1207 1207 1
+613 618 6
+1605 1610 6
+1425 1437 13
+1550 1564 15
+961 976 16
+884 900 17
+1760 8388607 8386848
+lru:
+1207 1207 1
+400 400 1
--- /dev/null
+++ b/tests/addabove/input
@@ -1,0 +1,2 @@
+20 3
+40 4
--- /dev/null
+++ b/tests/addabove/output
@@ -1,0 +1,10 @@
+Extents testextents n 2 lowest (20 22 3) lru (40 43 4) nlru 2
+by blkno:
+20 22 3
+40 43 4
+by size:
+20 22 3
+40 43 4
+lru:
+40 43 4
+20 22 3
--- /dev/null
+++ b/tests/addabove1/input
@@ -1,0 +1,2 @@
+180 4
+250 4
--- /dev/null
+++ b/tests/addabove1/output
@@ -1,0 +1,10 @@
+Extents testextents n 2 lowest (180 183 4) lru (250 253 4) nlru 2
+by blkno:
+180 183 4
+250 253 4
+by size:
+180 183 4
+250 253 4
+lru:
+250 253 4
+180 183 4
--- /dev/null
+++ b/tests/addbelow/input
@@ -1,0 +1,2 @@
+250 4
+180 4
--- /dev/null
+++ b/tests/addbelow/output
@@ -1,0 +1,10 @@
+Extents testextents n 2 lowest (180 183 4) lru (180 183 4) nlru 2
+by blkno:
+180 183 4
+250 253 4
+by size:
+180 183 4
+250 253 4
+lru:
+180 183 4
+250 253 4
--- /dev/null
+++ b/tests/addbelow1/input
@@ -1,0 +1,3 @@
+250 4
+180 4
+100 1
--- /dev/null
+++ b/tests/addbelow1/output
@@ -1,0 +1,13 @@
+Extents testextents n 3 lowest (100 100 1) lru (100 100 1) nlru 3
+by blkno:
+100 100 1
+180 183 4
+250 253 4
+by size:
+100 100 1
+180 183 4
+250 253 4
+lru:
+100 100 1
+180 183 4
+250 253 4
--- /dev/null
+++ b/tests/addbelow2/input
@@ -1,0 +1,24 @@
+0 1
+3 1
+4 1
+9 1
+10 1
+31 1
+11 1
+30 1
+12 1
+29 1
+13 1
+24 1
+14 1
+23 1
+15 1
+22 1
+5 1
+1 1
+16 1
+6 1
+2 1
+7 1
+8 1
+17 1
--- /dev/null
+++ b/tests/addbelow2/output
@@ -1,0 +1,13 @@
+Extents testextents n 3 lowest (0 17 18) lru (0 17 18) nlru 3
+by blkno:
+0 17 18
+22 24 3
+29 31 3
+by size:
+22 24 3
+29 31 3
+0 17 18
+lru:
+0 17 18
+22 24 3
+29 31 3
--- /dev/null
+++ b/tests/mergeabove/input
@@ -1,0 +1,3 @@
+100 5
+110 3
+105 5
--- /dev/null
+++ b/tests/mergeabove/output
@@ -1,0 +1,7 @@
+Extents testextents n 1 lowest (100 112 13) lru (100 112 13) nlru 1
+by blkno:
+100 112 13
+by size:
+100 112 13
+lru:
+100 112 13
--- /dev/null
+++ b/tests/mergenext/input
@@ -1,0 +1,2 @@
+101 4
+105 4
--- /dev/null
+++ b/tests/mergenext/output
@@ -1,0 +1,7 @@
+Extents testextents n 1 lowest (101 108 8) lru (101 108 8) nlru 1
+by blkno:
+101 108 8
+by size:
+101 108 8
+lru:
+101 108 8
--- /dev/null
+++ b/tests/mergeprevious/input
@@ -1,0 +1,2 @@
+105 4
+101 4
--- /dev/null
+++ b/tests/mergeprevious/output
@@ -1,0 +1,7 @@
+Extents testextents n 1 lowest (101 108 8) lru (101 108 8) nlru 1
+by blkno:
+101 108 8
+by size:
+101 108 8
+lru:
+101 108 8