import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner;

public class Main
{
	public static final int countMax = 30;


	public static BufferedReader br;// = new BufferedReader(new InputStreamReader(System.in));

	public class Curling
	{
		public Curling(byte[][] map, int mov, int[] pos)
		{
			int x = map.length;
			int y = map[0].length;
			maps = new byte[x][y];
			for(int i = 0; i < x; i++)
			{
				for(int j = 0; j < y; j++)
				{
					maps[i][j] = map[i][j];
				}
			}
			moving = mov;
			position = new int[2];
			position[0] = pos[0];
			position[1] = pos[1];
		}

		public byte[][] maps;
		public int moving;
		public int position[];
	}

	public static void main(String[] args) throws NumberFormatException, IOException
	{
		// TODO 自動生成されたメソッド・スタブ
		Main M = new Main();
		M.curlings();
	}

	public void curlings()
	{
		int[][] go = {{0, -1}, {-1, 0}, {1, 0}, {0, 1}};

		Scanner sc = new Scanner(System.in);

		while(true)
		{
			int x = sc.nextInt();
			int y = sc.nextInt();
			if(x == 0 && y == 0) break;

			byte[][] maps = new byte[x][y];

			int x2 = 0;
			int y2 = 0;

			for(int j = 0; j < y; j++)
			{
				for(int i = 0; i < x; i++)
				{
					maps[i][j] = sc.nextByte();
					if(maps[i][j] == 2)
					{
						x2 = i;
						y2 = j;
					}
				}
			}

			Queue<Curling> que = new ArrayDeque<>();

			que.add(new Curling(maps, 0, new int[] {x2, y2}));
			int result = -1;

			lol: while(!que.isEmpty())
			{
				Curling temp = que.poll();
				int x3 = temp.position[0];
				int y3 = temp.position[1];

				while(x3 >= 0 && temp.maps[x3][y3] != 1 && temp.maps[x3][y3] != 3)
				{
					x3--;
				}
				if(x3 >= 0)
				{
					if(temp.maps[x3][y3] == 3)
					{
						result = temp.moving + 1;
						break lol;
					}
					if(temp.maps[x3][y3] == 1 && x3 != temp.position[0] - 1)
					{
						x3++;
						temp.maps[x3][y3] = 2;
						temp.maps[temp.position[0]][temp.position[1]] = 0;
						temp.maps[x3-1][y3] = 0;
						if(temp.moving != 10) que.add(new Curling(temp.maps, temp.moving+1, new int[] {x3, y3}));
						temp.maps[x3][y3] = 0;
						temp.maps[temp.position[0]][temp.position[1]] = 2;
						temp.maps[x3-1][y3] = 1;
					}
				}
				x3 = temp.position[0];
				y3 = temp.position[1];

				while(x3 < temp.maps.length && temp.maps[x3][y3] != 1 && temp.maps[x3][y3] != 3)
				{
					x3++;
				}
				if(x3 < temp.maps.length)
				{
					if(temp.maps[x3][y3] == 3)
					{
						result = temp.moving + 1;
						break lol;
					}
					if(temp.maps[x3][y3] == 1 && x3 != temp.position[0] + 1)
					{
						x3--;
						temp.maps[x3][y3] = 2;
						temp.maps[temp.position[0]][temp.position[1]] = 0;
						temp.maps[x3+1][y3] = 0;
						if(temp.moving != 10) que.add(new Curling(temp.maps, temp.moving+1, new int[] {x3, y3}));
						temp.maps[x3][y3] = 0;
						temp.maps[temp.position[0]][temp.position[1]] = 2;
						temp.maps[x3+1][y3] = 1;
					}
				}
				x3 = temp.position[0];
				y3 = temp.position[1];

				while(y3 >= 0 && temp.maps[x3][y3] != 1 && temp.maps[x3][y3] != 3)
				{
					y3--;
				}
				if(y3 >= 0)
				{
					if(temp.maps[x3][y3] == 3)
					{
						result = temp.moving + 1;
						break lol;
					}
					if(temp.maps[x3][y3] == 1 && y3 != temp.position[1] - 1)
					{
						y3++;
						temp.maps[x3][y3] = 2;
						temp.maps[temp.position[0]][temp.position[1]] = 0;
						temp.maps[x3][y3-1] = 0;
						if(temp.moving != 10) que.add(new Curling(temp.maps, temp.moving+1, new int[] {x3, y3}));
						temp.maps[x3][y3] = 0;
						temp.maps[temp.position[0]][temp.position[1]] = 2;
						temp.maps[x3][y3-1] = 1;
					}
				}
				x3 = temp.position[0];
				y3 = temp.position[1];

				while(y3 < temp.maps[0].length && temp.maps[x3][y3] != 1 && temp.maps[x3][y3] != 3)
				{
					y3++;
				}
				if(y3 < temp.maps[0].length)
				{
					if(temp.maps[x3][y3] == 3)
					{
						result = temp.moving + 1;
						break lol;
					}
					if(temp.maps[x3][y3] == 1 && y3 != temp.position[1] + 1)
					{
						y3--;
						temp.maps[x3][y3] = 2;
						temp.maps[temp.position[0]][temp.position[1]] = 0;
						temp.maps[x3][y3+1] = 0;
						if(temp.moving != 10) que.add(new Curling(temp.maps, temp.moving+1, new int[] {x3, y3}));
						temp.maps[x3][y3] = 0;
						temp.maps[temp.position[0]][temp.position[1]] = 2;
						temp.maps[x3][y3+1] = 1;
					}
				}
			}

			System.out.println(result <= 10 ? result : -1);
		}
	}

	public static int MovingStone(int movingCount, int movingDirection, byte[][] maps, int x, int y)
	{
		int temp = 0;

		byte[][] mapscpy = new byte[maps.length][maps[0].length];

		for(int i = 0; i < maps[0].length; i++)
		{
			for(int j = 0; j < maps.length; j++)
			{
				mapscpy[j][i] = maps[j][i];
			}
		}

		int tempX = x;
		int tempY = y;

		while(mapscpy[tempX][tempY] != 1 && mapscpy[tempX][tempY] != 3)
		{
			tempX--;
		}
		if(mapscpy[tempX][tempY] == 3) return movingCount;
		tempX++;
		mapscpy[x][y] = 0;
		mapscpy[tempX][tempY] = 2;
		mapscpy[tempX - 1][tempY] = 0;
		MovingStone(movingCount + 1, movingDirection, mapscpy, tempX, tempY);
		mapscpy[x][y] = 2;
		mapscpy[tempX][tempY] = 0;
		mapscpy[tempX - 1][tempY] = 1;
		tempX = x;
		tempY = y;

		while(mapscpy[tempX][tempY] != 1)
		{
			tempX++;
		}
		tempX--;
		mapscpy[x][y] = 0;
		mapscpy[tempX][tempY] = 2;
		mapscpy[tempX + 1][tempY] = 0;
		MovingStone(movingCount + 1, movingDirection, mapscpy, tempX, tempY);;
		mapscpy[x][y] = 2;
		mapscpy[tempX][tempY] = 0;
		mapscpy[tempX + 1][tempY] = 1;
		tempX = x;
		tempY = y;

		while(mapscpy[tempX][tempY] != 1)
		{
			tempY--;
		}
		tempY++;
		mapscpy[x][y] = 0;
		mapscpy[tempX][tempY] = 2;
		mapscpy[tempX][tempY - 1] = 0;
		MovingStone(movingCount + 1, movingDirection, mapscpy, tempX, tempY);;
		mapscpy[x][y] = 2;
		mapscpy[tempX][tempY] = 0;
		mapscpy[tempX][tempY - 1] = 1;
		tempX = x;
		tempY = y;


		while(mapscpy[tempX][tempY] != 1)
		{
			tempY++;
		}
		tempY--;
		mapscpy[x][y] = 0;
		mapscpy[tempX][tempY] = 2;
		mapscpy[tempX][tempY + 1] = 0;
		MovingStone(movingCount + 1, movingDirection, mapscpy, tempX, tempY);;
		mapscpy[x][y] = 2;
		mapscpy[tempX][tempY] = 0;
		mapscpy[tempX][tempY + 1] = 1;
		tempX = x;
		tempY = y;



		return temp;
	}

	public static int Ret(int x, int y)
	{
		return x * 1000 + y;
	}

	public static int KAKO(char[] a, int checking, int to)
	{
		int result = 0;
		for(int i = to; i < a.length; i++)
		{
			//System.err.print(a[i]);
			if(a[i] == '[') i = KAKO(a, 1, i + 1);
			else if(a[i] == '(') i = KAKO(a, 2, i + 1);
			else
			{
				switch(checking)
				{
					case 1:
					{
						if(a[i] == ']') return i;
						else if(a[i] == ')') return -100;
					}
					case 2:
					{
						if(a[i] == ']') return -100;
						else if(a[i] == ')') return i;
					}
					case 0:
					{
						if(a[i] == ']') return -100;
						else if(a[i] == ')') return -100;
					}
				}
			}
			if(i < 0) return -100;
		}
		if(checking == 0) return result;
		else return -100;
	}

	public static void addUnionFind(int a[][], int b, int c, boolean d[][])
	{
		//System.err.println("UnionFind" + " " + b%a.length + " " + b/a.length + " " + c%a.length + " " + c/a.length);
		int e = b;
		while(true)
		{
			boolean tempb = d[e%a.length][e/a.length];
			if(tempb) break;
			e = a[e%a.length][e/a.length];
		}
		//System.err.println("EDEFINED");
		int f = c;
		while(true)
		{
			boolean tempb = d[f%a.length][f/a.length];
			//System.err.println("F: " + f + " " + tempb);
			if(tempb) break;
			f = a[f%a.length][f/a.length];
		}
		//System.err.println("FDEFINED");
		//System.err.println("e:" + e + " f:" + f + " b:" + b + " c:" + c + " " + a[b%a.length][b/a.length] + " " + a[c%a.length][c/a.length]);
		d[c%a.length][c/a.length] = false;
		a[c%a.length][c/a.length] = b;
		//System.err.println("e:" + e + " f:" + f + " b:" + b + " c:" + c + " " + a[b%a.length][b/a.length] + " " + a[c%a.length][c/a.length]);
		if(e == f) return;
		else if(e > f)
		{
			d[e%a.length][e/a.length] = false;
			a[e%a.length][e/a.length] = f;
		}
		else
		{
			d[f%a.length][f/a.length] = false;
			a[f%a.length][f/a.length] = e;
		}
	}

	public static boolean checkWin(char[][] str, int num, int select, int select2, boolean[] b)
	{
		boolean b2 = false;
		//if(num % 3 == 2) System.err.print("| " + str[0][select] + " " + str[0][select2] + " ");
		if(num % 3 == 0)
		{
			for(int i = 0; i < 9; i++)
			{
				if(b2) return true;
				//if(num == 0) System.out.println(i);
				if(b[i]) continue;
				b[i] = true;
				b2 = checkWin(str, num + 1, i, 0, b);
				b[i] = false;
			}
		}
		else if(num % 3 == 1)
		{
			for(int i = 0; i < 9; i++)
			{
				//System.err.println(b[i] + " " + i);
				if(b[i]) continue;
				for(int j = -1; j < 2; j++)
				{
					if(b2) return true;
					if(str[0][select] == str[0][i] + j && str[1][select] == str[1][i])
					{
						//System.err.println(str[0][select] + " " + str[0][i] + " " + select + " " + i);
						b[i] = true;
						b2 = checkWin(str, num + 1, select, i, b);
						b[i] = false;
					}
				}
			}
		}
		else if(num % 3 == 2)
		{
			for(int i = 0; i < 9; i++)
			{
				if(b[i]) continue;
				for(int j = -1; j < 2; j++)
				{
					if(b2) return true;
					//System.err.println(str[0][select] + " " + str[0][select2] + " " + str[0][i] + " " + j + " " + i + " " + num);
					if(num == 8)
					{

						if(str[1][select] == str[1][i] && str[1][select2] == str[1][i])
						{
							if(j == 0)
							{
								if(str[0][select] == str[0][i] && str[0][select2] == str[0][i]) return true;
							}
							else
							{
								//System.err.println((str[0][select] == str[0][i] + j) + " " + (str[0][select2] != str[0][i] && str[0][select] != str[0][select2]));
								//System.err.println((str[0][select2] == str[0][i] + j) + " " + (str[0][select] != str[0][i] && str[0][select] != str[0][select2]));
								if(str[0][select] == str[0][i] + j)
								{
									if(str[0][select2] != str[0][i] && str[0][select] != str[0][select2]) return true;
								}
								if(str[0][select2] == str[0][i] + j)
								{
									if(str[0][select] != str[0][i] && str[0][select2] != str[0][select]) return true;
								}
							}
						}
					}
					else
					{
						if(str[1][select] == str[1][i] && str[1][select2] == str[1][i])
						{
							if(j == 0)
							{
								if(str[0][select] == str[0][i] && str[0][select2] == str[0][i])
								{
									b[i] = true;
									b2 = checkWin(str, num + 1, 0, 0, b);
									b[i] = false;
								}
							}
							else
							{
								if(str[0][select] == str[0][i] + j)
								{
									if(str[0][select2] != str[0][i] && str[0][select] != str[0][select2])
									{
										b[i] = true;
										b2 = checkWin(str, num + 1, 0, 0, b);
										b[i] = false;
									}
								}
								if(str[0][select2] == str[0][i] + j)
								{
									if(str[0][select] != str[0][i] && str[0][select2] != str[0][select])
									{
										b[i] = true;
										b2 = checkWin(str, num + 1, 0, 0, b);
										b[i] = false;
									}
								}
							}
						}
						/*if(((str[0][select] == str[0][i] + j && j != 0) || (j == 0 && str[0][select] == str[0][i])) && str[1][select] == str[1][i])
						{
							if((j == 0 && str[0][select2] == str[0][i]) || (j != 0 && str[0][select2] != str[0][i]))
							{
								//System.err.println(str[0][i] + " " + num + " " + j);
								b[i] = true;
								b2 = checkWin(str, num + 1, 0, 0, b);
								b[i] = false;
							}
						}
						if(((str[0][select2] == str[0][i] + j && j != 0) || (j == 0 && str[0][select2] == str[0][i])) && str[1][select2] == str[1][i])
						{
							if((j == 0 && str[0][select] == str[0][i]) || (j != 0 && str[0][select] != str[0][i]))
							{
								//System.err.println(str[0][i] + " " + num + " " + j);
								b[i] = true;
								b2 = checkWin(str, num + 1, 0, 0, b);
								b[i] = false;
							}
						}//*/
					}
				}
			}
		}
		return b2;
	}

	public static int loop(int num, int sum, int max, boolean[] b, int now, int upper)
	{
		int a = num;
		if(max == now)
		{
			int c = 0;
			for(int i = 0; i < 10; i++)
			{
				if(b[i]) c += i;
			}
			for(int i = upper; i < 10; i++)
			{
				if(b[i]) continue;
				if(c + i == sum)
				{
					//System.err.println(sum + " " + c + " " + i);
					a++;
				}
			}
		}
		else
		{
			for(int i = upper; i < 10; i++)
			{
				if(b[i]) continue;
				b[i] = true;
				a = loop(a, sum, max, b, now + 1, i);
				b[i] = false;
			}
		}
		return a;
	}

	public static int[] toIntArray(int a)
	{
		int b[] = new int[8];
		for(int i = 0; i < 8; i++)
		{
			b[i] = (a >> (i * 3) & 0b111);
		}
		return b;
	}

	public static int toInt(int[] a)
	{
		int b = 0;
		for(int i = a.length - 1; i >= 0; i--)
		{
			b = b << 3;
			b+=a[i];
		}
		return b;
	}

	public static int toInt(Integer[] a)
	{
		int b = 0;
		for(int i = a.length - 1; i >= 0; i--)
		{
			b = b << 3;
			b+=a[i];
		}
		return b;
	}

	static void QuickSort(int[] d, int left, int right) {
		if (left>=right) {
			return;
		}
		int p = d[(left+right)/2];
		int l = left, r = right, tmp;
		while(l<=r) {
			while(d[l] < p) { l++; }
			while(d[r] > p) { r--; }
			if (l<=r) {
				tmp = d[l]; d[l] = d[r]; d[r] = tmp;
				l++; r--;
			}
		}
		QuickSort(d, left, r);
		QuickSort(d, l, right);
    }

	static void QuickSort(char[] d, int left, int right, char[] c) {
		if (left>=right) {
			return;
		}
		int p = d[(left+right)/2];
		int l = left, r = right;
		char tmp;
		while(l<=r) {
			while(d[l] < p) { l++; }
			while(d[r] > p) { r--; }
			if (l<=r) {
				tmp = d[l]; d[l] = d[r]; d[r] = tmp;
				tmp = c[l]; c[l] = c[r]; c[r] = tmp;
				l++; r--;
			}
		}
		QuickSort(d, left, r, c);
		QuickSort(d, l, right, c);
    }

	public static boolean SeparateSearch(int[] a, int b, int first, int end)
	{
		if(end - first <= 1)
		{
			if(a[first] == b) return true;
			else if(a[end] == b) return true;
			else return false;
		}
		else
		{
			int temp = (end + first) / 2;
			if(a[temp] == b) return true;
			else if(a[temp] < b) return SeparateSearch(a, b, temp, end);
			else return SeparateSearch(a, b, first, temp);
		}
	}

	public static int GCD(int x, int y)
	{
		int z = Math.max(x, y) % Math.min(x, y);
		if(z == 0) return Math.min(x, y);
		return GCD(z, Math.min(y, x));
	}

	public static int SelectionSort(int a[])
	{
		int Select = 0;
		for(int j = 0; j < a.length - 1; j++)
		{
			int[] min = {0, Integer.MAX_VALUE};
			for(int i = j; i < a.length; i++)
			{
				if(min[1] > a[i])
				{
					min[1] = a[i];
					min[0] = i;
				}
			}
			if(j != min[0])
			{
				Select++;
				swap(a, min[0], j);
			}
		}
		return Select;
	}

	public static int BubbleSort(int a[])
	{
		int swapp = 0;
		boolean flag = true;
		while(flag)
		{
			flag = false;
			for(int i = 0; i < a.length - 1; i++)
			{
				if(a[i] > a[i+1])
				{
					swapp++;
					swap(a, i, i+1);
					flag = true;
				}
			}
		}
		return swapp;
	}

	public static void swap(int[] a, int x, int y)
	{
		a[x] = a[x] ^ a[y];
		a[y] = a[x] ^ a[y];
		a[x] = a[x] ^ a[y];
	}

	public static String[] inputOne() throws IOException
	{
		String str2 = br.readLine();
		String[] str = new String[str2.length()];
		for(int i = 0; i < str.length; i++)
		{
			if(i < str.length - 1)
			{
				str[i] = str2.substring(i, i+1);
			}
			else
			{
				str[i] = str2.substring(i);
			}
		}
		return str;
	}

	public static String[] input(int Num) throws IOException
	{
		String str[] = new String[Num];
		String str2 = br.readLine();
		int j = 0;
		for(int i = 0; i < Num; i++)
		{
			if(i < Num - 1)
			{
				str[i] = str2.substring(j, str2.indexOf(" ", j));
				j = str2.indexOf(" ", j) + 1;
			}
			else
			{
				str[i] = str2.substring(j);
			}
		}
		return str;
	}

	public static String[] input(int Num, String separate) throws IOException
	{
		String str[] = new String[Num];
		String str2 = br.readLine();
		int j = 0;
		for(int i = 0; i < Num; i++)
		{
			if(i < Num - 1)
			{
				str[i] = str2.substring(j, str2.indexOf(separate, j));
				j = str2.indexOf(separate, j) + 1;
			}
			else
			{
				str[i] = str2.substring(j);
			}
		}
		return str;
	}
	//*/

	/*

`           `            ```.(-~_````````````....-_~(?><___-``````````````.`````````````````````..__.~~~~~~~~~jI==lOXx.        ```
`` `  `    `               .z<```````````..`.....~(+=>>>:~<<;___. ```````````````````````````...``-(_.~~~~~~~~(w===lOUI<.
` ` `` `  `    `      `  .(!```````````````.``..~(?z>><!~``_~~~;<<-- ``````````````````````````._.`-<_.~~~~~~~:zz==zOzWOl
`  ` `  `   `   ` ` `  .(! `````````````````...-(??;<`` ` `  `  _~<<+<-.````````.````.``````````..-._+_~~~~~::~(I==?OwOXk:
`` ` `     `  `   `   -!``````````````````````._+==1-.```````` `   _~<<<+-....```.`````````````.``_~~(<_~~::::::zz1==wwrXX;`
` ``` ` `    `   `  .<_``.``````````````` ` ``.(==lll&-``` `` ``````` _~(<1z-__..``.`````.``````..`_~~+<~~::::::(I+lOzkvvXk.
` `  `   `    `  `.(!. _``````````````  `  ``` (=lttttO-``````` ` `````` _~<1Oz+--..````` .``````...~~(z_~(;:;;;;O>zttXuzwWn
 ` ` ` `   `     _~_..~```````````` ```` `````_+lltrrtlz_` `` ```` ` ` ```` _~?Ozwo-....` .~ `````.._~(=<_~;;>>>>z?ztOZuuuXW{`
  ` ` ` `  `   .!..-(!`````````````` ` ````_-._ltrrrrrlw>``````` `` ``````````._?1zO+_...`-~_.````..-~~+z<:<>>>>>l?ztzVuuuuXR_
    `  `    `.~~.._(> ````````````` ` ` ` ._(1_<zvrrvvwrI_```````````` `````````` _<1z<_~_._(< ````.-~~;zz<<>>>>?=?=tzWZuuuuXl
 `` ``  ` ` .<_..(zv_````` ```` .` `````._(z+zOz+OOvOwOvI__ ``````````````````````` _1+;<___:;< ```._~_:+O<<>>???===tlXyZzuZyk.`
 ` ` `` ` `.>~_.(zv<_`  ` ```` ~ `` ```._;+I~~_...~~~_~~1<~_-`````````````````````.`._<11?<.(<>_.`.._~(:;zz>????===lllXVXuuyyXl
  `   `  `.>~~~_zI<_``` `````-~_`` ``` _;<<<~~~........_(<_~_.``` .`````````````.`..`.-(1=?<~<z;_..._::<:+Z>?>???===llXykuuXVVk.
` ` ` ` `.<~~~_jI<~_  ``  ``.__` ``  `.<<:~~~...........~(<_:<_.``._``````````.``.`....-(l==<(1<>_..~~:><;zz????===lllXfkzuXffW[ `
 ` ` ` `.<::~(<dZ<~_ `  ``` (<_`  ```._::~~~....```````.__<<:<<_...-_.. ````.``..`.`...._1Ozz_+z+z_.~~:<<;+I????===llOWpHzuXfWkH
 `      (;:(;;juC~~  `` ```_:~`` ```._::~~~....``````````._<>;<z-...(-~__..`.............(zOt<(O>1>~_:;>?>>z????===llOWkHzXfpWqH;`
  ` `  .;;;+>juZ<(<` ``` ` (<_  ````_~::~~~...````````````._<>>1<_-._1-_<_..`............_<OzI:Oz+O_~(>;???1z?====lltwWkHuWpbqqHb`
     ` (;;;+?yuI~+~```````.(~~   `` ~~:~~....`.````````````._:;+z<<_.(G-(>-__.`........~..(1ww<zO<jI~(>>????==?==llttdkkSwWkqmmHM-
      .z>?>1zuZ>(I_``.``` _:~_` ` `.~::~...````````````````` _><1z><_.jk:<1+___...~~~~.~~..<zzI+wz+X<<?>>????======ttdkbSdWqH@gg@k
 `  ``(v???jZuI;zI........_::_```` _:::~...`````````````````` <<_+11<__Oc:<+z+<__~.~~~~~~~~_1wwzzI<dI;+>>?>????===lOzWbWXXqH@@@@@g
      jI==?dXuI+wI~~~~~~~~~::_```` (:<<~..`.````````````` ````-1__<+w<:<O<:;+zz+:~~~~~~~~~_~(wvI?z>dXz>>>?????====zIdWkSwWHM@@@@@@
      Oll=1XZk<zyI:~::::~::::_````-;>><~.```.````````` ``````` (>.__?111zO<>_<zrw+<;<_::((<_(OvO=<;zXO<;<>>????===zzdkWXW@@@@@@@@@
      ZlllzyyI?dV0;:;::::::;;__..._;>><..`.````.``````` ``  ``` >  ..dX0OlI<<::?OXO=??<;;;;::zvtz<:zvvI;<?>>???==zI>XWXWg@@@gggggg
      ZttldVZZzXf0z>>>;;;::;1<_..._;>><_..`...`````````` `` `   (HW9!___+Xwc~_~<<jXAOz>>;;:;;+wOz<_ztwI;;>>>>????l<jHWH@ggggggggH@
      OtttdfyXvXVkO??>>>>>;>+O<~~~_;>?<<__--....```` ` ` `````.J9<` ``. _1Zk+.._+<+wXXz>1&+<;+zOO>_zZzZ>;;;>>>???1>jHkHH@@@@HMMMHY
      zrrrdVWXwXyWO????>>>>>>zz_~~~;+<<~__~<?11z+-```````  `````  ``````._<OU&(jggggHmmmewy<?zz<<! (<+O>;;;>>>>>???dkkkbbHHHHkSvI(
    ` jrrrXy0XuZZVk=????>??>>+rz:~~<?<~` ..._(((><_`````````  ``` ``...-(jWNMMMMMMMMMMMMBMHMNm<_``` <>1<;;;;>;;>+1jgHkkkkWkWHHwvz1
     `(trrXyVzuZZXW==?>>>?=?>>OO+::(1+((--(-__(1z_:_`````````` ````..-JdHWMMMNNMHHHHMYWB>_vM##v_...-<z+z;;;;;;:;>+dBTTUWWWUXHHzOwZ
      .OrrwZCzuZZZWc1z>>>>1z>?ztl+_:dWWMMHHMMMNmg&+-.```` ````````` -dUC<~zHMMM@gg@@@N+.; (VU=_...._(?>=>;;;;;::+z>~(rwXC<jMMN<1wZ
       jrrXk>(ZZZZX$<Oz>>>?l<<lltz+:<OOCz+<d#M@MM#M8:`````` ````````` `   (WHH@@@g@@@@@H: ?<_.`....~(>>1z;:;;;:<zw>~+v<<_(HMMNl_jW
       .zwXk!.XZZZyW<(O>>>>Oz;zlllO<;1z<~(<(MHH@#MI<`````````````````````` 7YTTWHH@@@@H6_..........~<>>jc:;>>;;<zuc~~_..(WMMNNl_+z
        (wXk~ (XXyZWs.jI>>;+w<<Ot=OO;+OA-._-dMM@MMQm,```````````````````` `-((JUHHWXwZC~......~~~~~_+<+zI;>>>>;+wuI~~_~(HM@HNN>.zO
       ` zXW_` <wyZyW_ jz>;;jI:+rz1lz+=wk-..(UWHHMH9!``````` ``` ````````` -(UWkkWWV=~~~~~~~...~..~(<<zr>;>???>jwuC~._(HHHHHHN: (?
     ` ``(Oy_ ` _zWZWl` ?1>;;z+;1tO+1???OZ--.(wkzXWZ!``` ``````````````` ``` `_~~`....~~~~~~~~~~.~_<<(tr<+=????zZOz(JdHHHHHH@N>  ;
          (X}  ` _<?XW;` _<<;+O<:?Oz????<Oz__<<<<!_```````````````````````````````.......~..~.~.._<<(ztr<z=????zXQqHHMHHVHHH@H:
           (k.`     _?Ti ``` ?jwo_<1z<+=>+O<......```````` `````` ``````````````..`.....~.~.~~.._<<~(lrZ+I==?=zwWHHHWUU0Od@@@H_
           `j+       `  __``   1OI_~+z(:;:zz_.``````````````````````````````````.```....~.~~~.._:~.(lOvwO==???dZO<;<1OuuldgH@H_  `
             ?!               `++zz_~<z<::(w:..```````````` ``` ``` ````````````````....~..~_-_::__jOwuuwz????dIw>;++1wuOwHWHH;`
                               (v?><__1z<:(tz_`````````````````` ``` ``````````````.......~.._::~_(wZuZuw<+???z=wI>??=zuOwWXWH}
               `                ?+><<__1z_~1z> ``````` ` ````````````` ````````````......__._::~.(dZZZZuX<+=?1V=z0>???zwOOyuWk$
                            `   +=+?1<__1o_(zw+_``` ` ``` `````````````` `````````....~_(<~_:~~~_dZyyZZuX<>??zw=zX>>?=?zZlXvXWS
                                1==111<~_1z<<zw<_````` `````` ``...``````` `` ```...._(<<~_(~~~_jZyyZZZuZ<>??zw=zXz>?=?=OtdZwX0_
          `                   ` +=lOOl=+_~<1z<zXA+. ``` ````````````````````````..-_(<<:~~(~~_(jyyVyZZyZZ>>??zrz1dI>??=?ztdIzwX:
                  `         `   z=lltrOz+<_(11zwwUX<--.  ` ````````````````````.-_(<::::~~:~_(jXyVVyyZyZZ?>>>Orz+wI>1????zwXzzul
                               .z?=zttOOtzz++<?4kOwwXyXA&-..```````````````` .-(<<<:~~:~:~~_(1wXfVyyZyVXI?>;<ttz;zXz+z????OXI+XI_`
                          `  ``(v>jOzzOOlttltrzzWOtwzZuXyZXwo+-. ````````` .(<<<::~:~_<~~~(<<1wyfyyyZyVkz?>;+zrv;+zz;z?>??zuZ>zw_.
                              .+<:+wXz><1zltlltturwuwXzXX0uuZuuXy+-.`` --(+<<:::~~:~~(<_(<~~~<zyyyyyZyfkz>>;1lwO<<OI<jz>??1wXzzX>.
          `                 ` (<;:+zXkXz>?=lttttwrwuwyzySzuuZZZZuZWA&(J&z<::~:~~:~:~~(_<<~~~~_jZyyyZyZWWz>>>z=Owz;zv><w????zzI1dl~
                  `     `  ``.;;;;1wWHWWkzltrrrvvvzzwZuZXuzzuzuzuuuXXWWS<_~~:~~~~~~__+~~~~~~~~_?WyZuuZZXI??+jO=wI;?zO;jz???zrOzdI~
                         `  .<<>;>zXHMHkkkOOrrvvvvuuXZZZuzvvzwvvuZWUC<_C_~~~~~~:~~~~(<~:~:~~~~:~_TZuzrOX0z>?zOlzX<<1Oz+z??==ztlzS_
                          `.<:;1zzdHHHqqHHkytrrvvvzuuuuuuwrtrrrZ=7!_```-:.~~~~~~~~.(c~~:~~~~~~~~~._?CXuwrz>>?tO=zO<<zOz1????=OzzS;
          `       `   ` ` .+:(uQkWHqqqH@@@HHwtOwwZO777??!~```  ````````(!..~~~~~~~.(~~~~:~~~~~~~~....._<?111+zlz1zw++zOz???>?zOlXz
                        `.+<(dHHHH@Hmggg@MY!~ `````````````````````````__....~~~~.~<~~~~~~~~~~~~.~.......`.`. _~!??777zwwzz??zwrww
                       `.z<:+WHHM#HM@HH9^````` ....`````` `` ``````````......~.~.~~<~~~~~~~~~~....~......```````````.-_<zUXAOzrzXy
                    ` `.zz<<d@MNNNNM3~._```````_..```. ... `````````.`..`......~~~~~~~~~~~~...........``````````` .JuwXWHH@@HkkkXf
          `       `  ` +??+zHMMNNNF_..```````` _. ``` `      ``````.```.........~~~~~~~~.........`.````````````.(twQHM@@@@@HHHMHg@
              `  `  ` (==l=dMMMMMD...``````. `._ ``` ``````` _...`..`..`.........~~___`....`.``````````````` .(ugHMMHH@@MHHHHHHkff
               `     (1tlluMMNMNF....`````. ` _``` ``` ``````` _~___..`......~~_`````````````````````````` .JdHHmmH@MHHHHWWpWyWHHH
          `       ``.1wrlzdMMNN#~..__````````-.` `` ````` ```````` `___--_~~._.````````````````````````` .jXbpkmmHHHUUuzvzVUZyVfpf
                `  .+zuwzdMMMMMK_.(> ``````` ._` `` ` `````` `````````  ``` ````````````````````` ` `  .uWbpbkHbpWUXzzZOz11>;<1zvU
                ` .+zX0rwWMNN#Ht`.d}   .``  ~. `` ```````````` ````````` ` `` `` `````` ``````` `` ` .dWUZXyyfWU0vwwC<>;>>>>;:<zrt
                  (=dXvXWMMNNMH% (#`   . ``._.```````` ```` ``` ` ` ` ` `  `  `  `  `` ``` ` ` ``` .dWZZXyWUXXX0VC<<(>;;;;<<<:(+wy
          `   `` .=zXXwXHMNNN#M:.Ht  ` ~_``.~.``` `` ```````` ```` ``` ` ``  ` `` `` ``` `` ```` (XWyZyyyZXXp9C<~~~(<<:~~~_((+zwXf
               `.+zw0rXXMNNNNNN<.wA+.` ~_``.~_```` ```````````` ``` `  `  ` ` `  ` `` ` ` ````.(HHHVVVWXWpWY>~~~~~:~~~~_:<?COVZXzu
            ` ` (trwzzXHNNNNMNN>(wWMs_` _``.._-` ```````` `` ```  `` `` `  ` ` ``   `  ` `  .JHMHHWHmHHUY>:::~:~~~~_((><<<~~~<1Owu
             ` (OrrwXwX#NNMMNM$_(XWMMy-`. ``.~__````````````` ``` `  ` ``` ` ` ` `` `` `  .d@M@@HHH90C;:::::;<::~~:~::::~~~~~.._<?
          `   -wzzuuvdMMMMMM6<:(wXyWMHk,__   ._~-` ````````````  `  `` ` `  ``` ````` ..gMMMH9UYYC<<<+<<<<:::::_((_:~::::~~~~_...`

	 */




}



Measured memory_bytes: 150460