import java.util.*;
import java.io.*;

class Main {
	void solve () {
		
		int n = nextInt();
		int[] A = nextIntArray(n);
		
		int m = nextInt();
		int ans = 0;
		for (int i=0; i<m; i++) {
			if (Arrays.binarySearch(A, nextInt()) >= 0) ans++;
		}
		
		out.println(ans);
		
		
	}


	// <Main Method>
	public static PrintWriter out;
	public static void main(String[] args) {
		out = new PrintWriter(System.out);
		new Main().solve();
		out.flush();
	}

	// <Default Field>
	static int maxInt = Integer.MAX_VALUE, minInt = Integer.MIN_VALUE;
	static int mod = 1000000007;

	// <Default Method>
	static int max (int... ar) {Arrays.sort(ar);return ar[ar.length-1];}
	static int min (int... ar) {Arrays.sort(ar);return ar[0];}
	static int calcManhatDistance (int x1, int y1, int x2, int y2) {
		int d = Math.abs(x1-x2)+Math.abs(y1-y2);
		return d;
	}
	static double calcEuclidDistance (double x1, double y1, double x2, double y2) {
		double d = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
		return d;
	}
	static boolean isPrime (int n) {
		if (n==2) return true;
		if (n<2 || n%2==0) return false;
		double d = Math.sqrt(n);
		for (int i=3; i<=d; i+=2) if(n%i==0){return false;}
		return true;
	}
	static void printChar2DArray (char[][] ar) {
		for (int i=0; i<ar.length; i++) {
			for (int j=0; j<ar[0].length; j++) {
				out.print(ar[i][j]);
			}
			out.println();
		}
	}

	// <Fast Scanner> START -------------------------------------------------
	static InputStream in = System.in;
	static  byte[] buffer = new byte[1024];
	static int length = 0, p = 0;
	public static boolean hasNextByte () {
		if (p < length) return true;
		else {
			p = 0;
			try {length = in.read(buffer);}
			catch (Exception e) {e.printStackTrace();}
			if (length == 0) return false;
		}
		return true;
	}
	public static int readByte () {
		if (hasNextByte() == true) return buffer[p++];
		return -1;
	}
	public static boolean isPrintable (int n) {return 33<=n&&n<=126;}
	public static void skip () {
		while (hasNextByte() && !isPrintable(buffer[p])) p++;
	}
	public static boolean hasNext () {skip(); return hasNextByte();}
	public static String next () {
		if (!hasNext()) throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int temp = readByte();
		while (isPrintable(temp)) {
			sb.appendCodePoint(temp);
			temp = readByte();
		}
		return sb.toString();
	}
	public static String[] nextStringArray (int n) {
		String[] ar = new String[n];
		for (int i=0; i<n; i++) ar[i] = next();
		return ar;
	}
	public static int nextInt () {return Math.toIntExact(nextLong());}
	public static int[] nextIntArray (int n) {
		int[] ar = new int[n];
		for (int i=0; i<n; i++) ar[i] = nextInt();
		return ar;
	}
	public static long nextLong () {
		if (!hasNext()) throw new NoSuchElementException();
		boolean minus = false;
		int temp = readByte();
		if (temp == '-') {
			minus = true;
			temp = readByte();
		}
		if (temp<'0' || '9'<temp) throw new NumberFormatException();
		long n = 0;
		while (isPrintable(temp)) {
			if ('0'<=temp && temp<='9') {
				n *= 10;
				n += temp - '0';
			}
			temp = readByte();
		}
		return minus? -n : n;
	}
	public static char[][] nextChar2DArray (int h, int w, boolean b) {
		//b(番兵)がtrueなら配列を余計に確保する
		char[][] ar = new char[b?h+2:h][b?w+2:h];
		for (int i=b?1:0; i<(b?h+1:h); i++) {
			String temp = next();
			for (int j=0; j<w; j++) {
				ar[i][b?j+1:j] = temp.charAt(j);
			}
		}
		return ar;
	}
	// <Fast Scanner> END ----------------------------------------------------------
}
 import java.util.*; util.* java import java.io.*; io.* java class Main {
	void solve () {
		
		int n = nextInt();
		int[] A = nextIntArray(n);
		
		int m = nextInt();
		int ans = 0;
		for (int i=0; i<m; i++) {
			if (Arrays.binarySearch(A, nextInt()) >= 0) ans++;
		}
		
		out.println(ans);
		
		
	}


	// <Main Method>
	public static PrintWriter out;
	public static void main(String[] args) {
		out = new PrintWriter(System.out);
		new Main().solve();
		out.flush();
	}

	// <Default Field>
	static int maxInt = Integer.MAX_VALUE, minInt = Integer.MIN_VALUE;
	static int mod = 1000000007;

	// <Default Method>
	static int max (int... ar) {Arrays.sort(ar);return ar[ar.length-1];}
	static int min (int... ar) {Arrays.sort(ar);return ar[0];}
	static int calcManhatDistance (int x1, int y1, int x2, int y2) {
		int d = Math.abs(x1-x2)+Math.abs(y1-y2);
		return d;
	}
	static double calcEuclidDistance (double x1, double y1, double x2, double y2) {
		double d = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
		return d;
	}
	static boolean isPrime (int n) {
		if (n==2) return true;
		if (n<2 || n%2==0) return false;
		double d = Math.sqrt(n);
		for (int i=3; i<=d; i+=2) if(n%i==0){return false;}
		return true;
	}
	static void printChar2DArray (char[][] ar) {
		for (int i=0; i<ar.length; i++) {
			for (int j=0; j<ar[0].length; j++) {
				out.print(ar[i][j]);
			}
			out.println();
		}
	}

	// <Fast Scanner> START -------------------------------------------------
	static InputStream in = System.in;
	static  byte[] buffer = new byte[1024];
	static int length = 0, p = 0;
	public static boolean hasNextByte () {
		if (p < length) return true;
		else {
			p = 0;
			try {length = in.read(buffer);}
			catch (Exception e) {e.printStackTrace();}
			if (length == 0) return false;
		}
		return true;
	}
	public static int readByte () {
		if (hasNextByte() == true) return buffer[p++];
		return -1;
	}
	public static boolean isPrintable (int n) {return 33<=n&&n<=126;}
	public static void skip () {
		while (hasNextByte() && !isPrintable(buffer[p])) p++;
	}
	public static boolean hasNext () {skip(); return hasNextByte();}
	public static String next () {
		if (!hasNext()) throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int temp = readByte();
		while (isPrintable(temp)) {
			sb.appendCodePoint(temp);
			temp = readByte();
		}
		return sb.toString();
	}
	public static String[] nextStringArray (int n) {
		String[] ar = new String[n];
		for (int i=0; i<n; i++) ar[i] = next();
		return ar;
	}
	public static int nextInt () {return Math.toIntExact(nextLong());}
	public static int[] nextIntArray (int n) {
		int[] ar = new int[n];
		for (int i=0; i<n; i++) ar[i] = nextInt();
		return ar;
	}
	public static long nextLong () {
		if (!hasNext()) throw new NoSuchElementException();
		boolean minus = false;
		int temp = readByte();
		if (temp == '-') {
			minus = true;
			temp = readByte();
		}
		if (temp<'0' || '9'<temp) throw new NumberFormatException();
		long n = 0;
		while (isPrintable(temp)) {
			if ('0'<=temp && temp<='9') {
				n *= 10;
				n += temp - '0';
			}
			temp = readByte();
		}
		return minus? -n : n;
	}
	public static char[][] nextChar2DArray (int h, int w, boolean b) {
		//b(番兵)がtrueなら配列を余計に確保する
		char[][] ar = new char[b?h+2:h][b?w+2:h];
		for (int i=b?1:0; i<(b?h+1:h); i++) {
			String temp = next();
			for (int j=0; j<w; j++) {
				ar[i][b?j+1:j] = temp.charAt(j);
			}
		}
		return ar;
	}
	// <Fast Scanner> END ----------------------------------------------------------
} Main // <Main Method>
	public static PrintWriter out; out // <Default Field>
	static int maxInt = Integer.MAX_VALUE maxInt Integer.MAX_VALUE Integer Integer.MAX_VALUE minInt = Integer.MIN_VALUE; minInt Integer.MIN_VALUE Integer Integer.MIN_VALUE static int mod = 1000000007; mod 1000000007 // <Fast Scanner> START -------------------------------------------------
	static InputStream in = System.in; in System.in System System.in static  byte[] buffer = new byte[1024]; buffer new byte[1024] 1024 static int length = 0 length 0 p = 0; p 0 void solve () {
		
		int n = nextInt();
		int[] A = nextIntArray(n);
		
		int m = nextInt();
		int ans = 0;
		for (int i=0; i<m; i++) {
			if (Arrays.binarySearch(A, nextInt()) >= 0) ans++;
		}
		
		out.println(ans);
		
		
	} solve {
		
		int n = nextInt();
		int[] A = nextIntArray(n);
		
		int m = nextInt();
		int ans = 0;
		for (int i=0; i<m; i++) {
			if (Arrays.binarySearch(A, nextInt()) >= 0) ans++;
		}
		
		out.println(ans);
		
		
	} int n = nextInt(); n nextInt() nextInt int[] A = nextIntArray(n); A nextIntArray(n) nextIntArray n int m = nextInt(); m nextInt() nextInt int ans = 0; ans 0 for (int i=0; i<m; i++) {
			if (Arrays.binarySearch(A, nextInt()) >= 0) ans++;
		} int i=0; int i=0; i 0 i<m i m i++ i++ i {
			if (Arrays.binarySearch(A, nextInt()) >= 0) ans++;
		} {
			if (Arrays.binarySearch(A, nextInt()) >= 0) ans++;
		} if (Arrays.binarySearch(A, nextInt()) >= 0) ans++; Arrays.binarySearch(A, nextInt()) >= 0 Arrays.binarySearch(A, nextInt()) Arrays.binarySearch Arrays A nextInt() nextInt 0 ans++ ans out.println(ans) out.println out ans public static void main(String[] args) {
		out = new PrintWriter(System.out);
		new Main().solve();
		out.flush();
	} main {
		out = new PrintWriter(System.out);
		new Main().solve();
		out.flush();
	} out = new PrintWriter(System.out) out new PrintWriter(System.out) new Main().solve() new Main().solve new Main() out.flush() out.flush out String[] args args // <Default Method>
	static int max (int... ar) {Arrays.sort(ar);return ar[ar.length-1];} max {Arrays.sort(ar);return ar[ar.length-1];} Arrays.sort(ar) Arrays.sort Arrays ar return ar[ar.length-1]; ar[ar.length-1] ar ar.length-1 ar.length ar ar.length 1 int... ar ar static int min (int... ar) {Arrays.sort(ar);return ar[0];} min {Arrays.sort(ar);return ar[0];} Arrays.sort(ar) Arrays.sort Arrays ar return ar[0]; ar[0] ar 0 int... ar ar static int calcManhatDistance (int x1, int y1, int x2, int y2) {
		int d = Math.abs(x1-x2)+Math.abs(y1-y2);
		return d;
	} calcManhatDistance {
		int d = Math.abs(x1-x2)+Math.abs(y1-y2);
		return d;
	} int d = Math.abs(x1-x2)+Math.abs(y1-y2); d Math.abs(x1-x2)+Math.abs(y1-y2) Math.abs(x1-x2) Math.abs Math x1-x2 x1 x2 Math.abs(y1-y2) Math.abs Math y1-y2 y1 y2 return d; d int x1 x1 int y1 y1 int x2 x2 int y2 y2 static double calcEuclidDistance (double x1, double y1, double x2, double y2) {
		double d = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
		return d;
	} calcEuclidDistance {
		double d = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
		return d;
	} double d = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); d Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) Math.sqrt Math (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1) (x2-x1)*(x2-x1) (x2-x1) x2 x1 (x2-x1) x2 x1 (y2-y1)*(y2-y1) (y2-y1) y2 y1 (y2-y1) y2 y1 return d; d double x1 x1 double y1 y1 double x2 x2 double y2 y2 static boolean isPrime (int n) {
		if (n==2) return true;
		if (n<2 || n%2==0) return false;
		double d = Math.sqrt(n);
		for (int i=3; i<=d; i+=2) if(n%i==0){return false;}
		return true;
	} isPrime {
		if (n==2) return true;
		if (n<2 || n%2==0) return false;
		double d = Math.sqrt(n);
		for (int i=3; i<=d; i+=2) if(n%i==0){return false;}
		return true;
	} if (n==2) return true; n==2 n 2 return true; true if (n<2 || n%2==0) return false; n<2 || n%2==0 n<2 n 2 n%2==0 n%2 n 2 0 return false; false double d = Math.sqrt(n); d Math.sqrt(n) Math.sqrt Math n for (int i=3; i<=d; i+=2) if(n%i==0){return false;} int i=3; int i=3; i 3 i<=d i d i+=2 i+=2 i 2 if(n%i==0){return false;} if(n%i==0){return false;} n%i==0 n%i n i 0 {return false;} return false; false return true; true int n n static void printChar2DArray (char[][] ar) {
		for (int i=0; i<ar.length; i++) {
			for (int j=0; j<ar[0].length; j++) {
				out.print(ar[i][j]);
			}
			out.println();
		}
	} printChar2DArray {
		for (int i=0; i<ar.length; i++) {
			for (int j=0; j<ar[0].length; j++) {
				out.print(ar[i][j]);
			}
			out.println();
		}
	} for (int i=0; i<ar.length; i++) {
			for (int j=0; j<ar[0].length; j++) {
				out.print(ar[i][j]);
			}
			out.println();
		} int i=0; int i=0; i 0 i<ar.length i ar.length ar ar.length i++ i++ i {
			for (int j=0; j<ar[0].length; j++) {
				out.print(ar[i][j]);
			}
			out.println();
		} {
			for (int j=0; j<ar[0].length; j++) {
				out.print(ar[i][j]);
			}
			out.println();
		} for (int j=0; j<ar[0].length; j++) {
				out.print(ar[i][j]);
			} int j=0; int j=0; j 0 j<ar[0].length j ar[0].length ar[0] ar 0 ar[0].length j++ j++ j {
				out.print(ar[i][j]);
			} {
				out.print(ar[i][j]);
			} out.print(ar[i][j]) out.print out ar[i][j] ar[i] ar i j out.println() out.println out char[][] ar ar public static boolean hasNextByte () {
		if (p < length) return true;
		else {
			p = 0;
			try {length = in.read(buffer);}
			catch (Exception e) {e.printStackTrace();}
			if (length == 0) return false;
		}
		return true;
	} hasNextByte {
		if (p < length) return true;
		else {
			p = 0;
			try {length = in.read(buffer);}
			catch (Exception e) {e.printStackTrace();}
			if (length == 0) return false;
		}
		return true;
	} if (p < length) return true;
		else {
			p = 0;
			try {length = in.read(buffer);}
			catch (Exception e) {e.printStackTrace();}
			if (length == 0) return false;
		} p < length p length return true; true {
			p = 0;
			try {length = in.read(buffer);}
			catch (Exception e) {e.printStackTrace();}
			if (length == 0) return false;
		} p = 0 p 0 try {length = in.read(buffer);}
			catch (Exception e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} Exception e {e.printStackTrace();} e.printStackTrace() e.printStackTrace e {length = in.read(buffer);} length = in.read(buffer) length in.read(buffer) in.read in buffer if (length == 0) return false; length == 0 length 0 return false; false return true; true public static int readByte () {
		if (hasNextByte() == true) return buffer[p++];
		return -1;
	} readByte {
		if (hasNextByte() == true) return buffer[p++];
		return -1;
	} if (hasNextByte() == true) return buffer[p++]; hasNextByte() == true hasNextByte() hasNextByte true return buffer[p++]; buffer[p++] buffer p++ p return -1; -1 1 public static boolean isPrintable (int n) {return 33<=n&&n<=126;} isPrintable {return 33<=n&&n<=126;} return 33<=n&&n<=126; 33<=n&&n<=126 33<=n 33 n n<=126 n 126 int n n public static void skip () {
		while (hasNextByte() && !isPrintable(buffer[p])) p++;
	} skip {
		while (hasNextByte() && !isPrintable(buffer[p])) p++;
	} while (hasNextByte() && !isPrintable(buffer[p])) p++; hasNextByte() && !isPrintable(buffer[p]) hasNextByte() hasNextByte !isPrintable(buffer[p]) isPrintable(buffer[p]) isPrintable buffer[p] buffer p p++ p public static boolean hasNext () {skip(); return hasNextByte();} hasNext {skip(); return hasNextByte();} skip() skip return hasNextByte(); hasNextByte() hasNextByte public static String next () {
		if (!hasNext()) throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int temp = readByte();
		while (isPrintable(temp)) {
			sb.appendCodePoint(temp);
			temp = readByte();
		}
		return sb.toString();
	} next {
		if (!hasNext()) throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int temp = readByte();
		while (isPrintable(temp)) {
			sb.appendCodePoint(temp);
			temp = readByte();
		}
		return sb.toString();
	} if (!hasNext()) throw new NoSuchElementException(); !hasNext() hasNext() hasNext throw new NoSuchElementException(); new NoSuchElementException() StringBuilder sb = new StringBuilder(); sb new StringBuilder() int temp = readByte(); temp readByte() readByte while (isPrintable(temp)) {
			sb.appendCodePoint(temp);
			temp = readByte();
		} isPrintable(temp) isPrintable temp {
			sb.appendCodePoint(temp);
			temp = readByte();
		} sb.appendCodePoint(temp) sb.appendCodePoint sb temp temp = readByte() temp readByte() readByte return sb.toString(); sb.toString() sb.toString sb public static String[] nextStringArray (int n) {
		String[] ar = new String[n];
		for (int i=0; i<n; i++) ar[i] = next();
		return ar;
	} nextStringArray {
		String[] ar = new String[n];
		for (int i=0; i<n; i++) ar[i] = next();
		return ar;
	} String[] ar = new String[n]; ar new String[n] n for (int i=0; i<n; i++) ar[i] = next(); int i=0; int i=0; i 0 i<n i n i++ i++ i ar[i] = next(); ar[i] = next() ar[i] ar i next() next return ar; ar int n n public static int nextInt () {return Math.toIntExact(nextLong());} nextInt {return Math.toIntExact(nextLong());} return Math.toIntExact(nextLong()); Math.toIntExact(nextLong()) Math.toIntExact Math nextLong() nextLong public static int[] nextIntArray (int n) {
		int[] ar = new int[n];
		for (int i=0; i<n; i++) ar[i] = nextInt();
		return ar;
	} nextIntArray {
		int[] ar = new int[n];
		for (int i=0; i<n; i++) ar[i] = nextInt();
		return ar;
	} int[] ar = new int[n]; ar new int[n] n for (int i=0; i<n; i++) ar[i] = nextInt(); int i=0; int i=0; i 0 i<n i n i++ i++ i ar[i] = nextInt(); ar[i] = nextInt() ar[i] ar i nextInt() nextInt return ar; ar int n n public static long nextLong () {
		if (!hasNext()) throw new NoSuchElementException();
		boolean minus = false;
		int temp = readByte();
		if (temp == '-') {
			minus = true;
			temp = readByte();
		}
		if (temp<'0' || '9'<temp) throw new NumberFormatException();
		long n = 0;
		while (isPrintable(temp)) {
			if ('0'<=temp && temp<='9') {
				n *= 10;
				n += temp - '0';
			}
			temp = readByte();
		}
		return minus? -n : n;
	} nextLong {
		if (!hasNext()) throw new NoSuchElementException();
		boolean minus = false;
		int temp = readByte();
		if (temp == '-') {
			minus = true;
			temp = readByte();
		}
		if (temp<'0' || '9'<temp) throw new NumberFormatException();
		long n = 0;
		while (isPrintable(temp)) {
			if ('0'<=temp && temp<='9') {
				n *= 10;
				n += temp - '0';
			}
			temp = readByte();
		}
		return minus? -n : n;
	} if (!hasNext()) throw new NoSuchElementException(); !hasNext() hasNext() hasNext throw new NoSuchElementException(); new NoSuchElementException() boolean minus = false; minus false int temp = readByte(); temp readByte() readByte if (temp == '-') {
			minus = true;
			temp = readByte();
		} temp == '-' temp '-' {
			minus = true;
			temp = readByte();
		} minus = true minus true temp = readByte() temp readByte() readByte if (temp<'0' || '9'<temp) throw new NumberFormatException(); temp<'0' || '9'<temp temp<'0' temp '0' '9'<temp '9' temp throw new NumberFormatException(); new NumberFormatException() long n = 0; n 0 while (isPrintable(temp)) {
			if ('0'<=temp && temp<='9') {
				n *= 10;
				n += temp - '0';
			}
			temp = readByte();
		} isPrintable(temp) isPrintable temp {
			if ('0'<=temp && temp<='9') {
				n *= 10;
				n += temp - '0';
			}
			temp = readByte();
		} if ('0'<=temp && temp<='9') {
				n *= 10;
				n += temp - '0';
			} '0'<=temp && temp<='9' '0'<=temp '0' temp temp<='9' temp '9' {
				n *= 10;
				n += temp - '0';
			} n *= 10 n 10 n += temp - '0' n temp - '0' temp '0' temp = readByte() temp readByte() readByte return minus? -n : n; minus? -n : n minus -n n n public static char[][] nextChar2DArray (int h, int w, boolean b) {
		//b(番兵)がtrueなら配列を余計に確保する
		char[][] ar = new char[b?h+2:h][b?w+2:h];
		for (int i=b?1:0; i<(b?h+1:h); i++) {
			String temp = next();
			for (int j=0; j<w; j++) {
				ar[i][b?j+1:j] = temp.charAt(j);
			}
		}
		return ar;
	} nextChar2DArray {
		//b(番兵)がtrueなら配列を余計に確保する
		char[][] ar = new char[b?h+2:h][b?w+2:h];
		for (int i=b?1:0; i<(b?h+1:h); i++) {
			String temp = next();
			for (int j=0; j<w; j++) {
				ar[i][b?j+1:j] = temp.charAt(j);
			}
		}
		return ar;
	} char[][] ar = new char[b?h+2:h][b?w+2:h]; ar new char[b?h+2:h][b?w+2:h] b?h+2:h b h+2 h 2 h b?w+2:h b w+2 w 2 h for (int i=b?1:0; i<(b?h+1:h); i++) {
			String temp = next();
			for (int j=0; j<w; j++) {
				ar[i][b?j+1:j] = temp.charAt(j);
			}
		} int i=b?1:0; int i=b?1:0; i b?1:0 b 1 0 i<(b?h+1:h) i (b?h+1:h) b h+1 h 1 h i++ i++ i {
			String temp = next();
			for (int j=0; j<w; j++) {
				ar[i][b?j+1:j] = temp.charAt(j);
			}
		} {
			String temp = next();
			for (int j=0; j<w; j++) {
				ar[i][b?j+1:j] = temp.charAt(j);
			}
		} String temp = next(); temp next() next for (int j=0; j<w; j++) {
				ar[i][b?j+1:j] = temp.charAt(j);
			} int j=0; int j=0; j 0 j<w j w j++ j++ j {
				ar[i][b?j+1:j] = temp.charAt(j);
			} {
				ar[i][b?j+1:j] = temp.charAt(j);
			} ar[i][b?j+1:j] = temp.charAt(j) ar[i][b?j+1:j] ar[i] ar i b?j+1:j b j+1 j 1 j temp.charAt(j) temp.charAt temp j return ar; ar int h h int w w boolean b b
import java.util.*;
import java.io.*;

class Main {
	void solve () {
		
		int n = nextInt();
		int[] A = nextIntArray(n);
		
		int m = nextInt();
		int ans = 0;
		for (int i=0; i<m; i++) {
			if (Arrays.binarySearch(A, nextInt()) >= 0) ans++;
		}
		
		out.println(ans);
		
		
	}


	// <Main Method>
	public static PrintWriter out;
	public static void main(String[] args) {
		out = new PrintWriter(System.out);
		new Main().solve();
		out.flush();
	}

	// <Default Field>
	static int maxInt = Integer.MAX_VALUE, minInt = Integer.MIN_VALUE;
	static int mod = 1000000007;

	// <Default Method>
	static int max (int... ar) {Arrays.sort(ar);return ar[ar.length-1];}
	static int min (int... ar) {Arrays.sort(ar);return ar[0];}
	static int calcManhatDistance (int x1, int y1, int x2, int y2) {
		int d = Math.abs(x1-x2)+Math.abs(y1-y2);
		return d;
	}
	static double calcEuclidDistance (double x1, double y1, double x2, double y2) {
		double d = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
		return d;
	}
	static boolean isPrime (int n) {
		if (n==2) return true;
		if (n<2 || n%2==0) return false;
		double d = Math.sqrt(n);
		for (int i=3; i<=d; i+=2) if(n%i==0){return false;}
		return true;
	}
	static void printChar2DArray (char[][] ar) {
		for (int i=0; i<ar.length; i++) {
			for (int j=0; j<ar[0].length; j++) {
				out.print(ar[i][j]);
			}
			out.println();
		}
	}

	// <Fast Scanner> START -------------------------------------------------
	static InputStream in = System.in;
	static  byte[] buffer = new byte[1024];
	static int length = 0, p = 0;
	public static boolean hasNextByte () {
		if (p < length) return true;
		else {
			p = 0;
			try {length = in.read(buffer);}
			catch (Exception e) {e.printStackTrace();}
			if (length == 0) return false;
		}
		return true;
	}
	public static int readByte () {
		if (hasNextByte() == true) return buffer[p++];
		return -1;
	}
	public static boolean isPrintable (int n) {return 33<=n&&n<=126;}
	public static void skip () {
		while (hasNextByte() && !isPrintable(buffer[p])) p++;
	}
	public static boolean hasNext () {skip(); return hasNextByte();}
	public static String next () {
		if (!hasNext()) throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int temp = readByte();
		while (isPrintable(temp)) {
			sb.appendCodePoint(temp);
			temp = readByte();
		}
		return sb.toString();
	}
	public static String[] nextStringArray (int n) {
		String[] ar = new String[n];
		for (int i=0; i<n; i++) ar[i] = next();
		return ar;
	}
	public static int nextInt () {return Math.toIntExact(nextLong());}
	public static int[] nextIntArray (int n) {
		int[] ar = new int[n];
		for (int i=0; i<n; i++) ar[i] = nextInt();
		return ar;
	}
	public static long nextLong () {
		if (!hasNext()) throw new NoSuchElementException();
		boolean minus = false;
		int temp = readByte();
		if (temp == '-') {
			minus = true;
			temp = readByte();
		}
		if (temp<'0' || '9'<temp) throw new NumberFormatException();
		long n = 0;
		while (isPrintable(temp)) {
			if ('0'<=temp && temp<='9') {
				n *= 10;
				n += temp - '0';
			}
			temp = readByte();
		}
		return minus? -n : n;
	}
	public static char[][] nextChar2DArray (int h, int w, boolean b) {
		//b(番兵)がtrueなら配列を余計に確保する
		char[][] ar = new char[b?h+2:h][b?w+2:h];
		for (int i=b?1:0; i<(b?h+1:h); i++) {
			String temp = next();
			for (int j=0; j<w; j++) {
				ar[i][b?j+1:j] = temp.charAt(j);
			}
		}
		return ar;
	}
	// <Fast Scanner> END ----------------------------------------------------------
}

