You are given integer n. You have to arrange numbers from 1 to 2n, using each of them exactly once, on the circle, so that the following condition would be satisfied:

For every n consecutive numbers on the circle write their sum on the blackboard. Then any two of written on the blackboard 2n numbers differ not more than by 1.

For example, choose n = 3. On the left you can see an example of a valid arrangement: 1 + 4 + 5 = 10, 4 + 5 + 2 = 11, 5 + 2 + 3 = 10, 2 + 3 + 6 = 11, 3 + 6 + 1 = 10, 6 + 1 + 4 = 11, any two numbers differ by at most 1. On the right you can see an invalid arrangement: for example, 5 + 1 + 6 = 12, and 3 + 2 + 4 = 9, 9 and 12 differ more than by 1.

<image>

Input

The first and the only line contain one integer n (1 ≤ n ≤ 10^5).

Output

If there is no solution, output "NO" in the first line. 

If there is a solution, output "YES" in the first line. In the second line output 2n numbers — numbers from 1 to 2n in the order they will stay in the circle. Each number should appear only once. If there are several solutions, you can output any of them.

Examples

Input


3


Output


YES
1 4 5 2 3 6 

Input


4


Output


NO

Note

Example from the statement is shown for the first example. 

It can be proved that there is no solution in the second example.
import java.io.*;
import java.util.*;
public class code {
	static printer pw;
	static boolean[] visit;
	static ArrayList<Pair>[] adj;
	static ArrayList<Integer> list;
	static long max=01;
	static void dfs(int i, long c) {
		visit[i]=true;
		max=Math.max(c, max);
		for(Pair p: adj[i]) {
			if(!visit[p.x-1]) {
				dfs(p.x-1, c+1l*p.y);
			}
		}
	}
	public static double dist(Pair a, Pair b) {
		return Math.sqrt((a.x-b.x)*(a.x-b.x)+ (a.y-b.y)*(a.y-b.y));
	}
	public static boolean sign(int x) {
		return x>0;
	}
	static long ceildiv(long x,long y) {
		return x%y==0? x/y: x/y+1;
	}
	public static void main(String[] args) throws Exception {
		Scanner sc= new Scanner(System.in);
		pw = new printer();
		int n=sc.nextInt();
		if(n%2==0) {
			pw.println("NO");
			pw.flush();
			return;
		}
		pw.println("YES");
		pw.print(1+" ");
		boolean x=true;
		int y=1;
		for(int i=0; i<n-1; i++) {
			y+=x?3:1;
			x=!x;
			pw.print(y+" ");
		}
		pw.print(2+" ");
		x=false;
		y=2;
		for(int i=0; i<n-1; i++) {
			y+=x?3:1;
			x=!x;
			pw.print(y+" ");
		}
		pw.close();
	}
	static class Scanner {
		StringTokenizer st;
		BufferedReader br;
 
		public Scanner(InputStream s) {
			br = new BufferedReader(new InputStreamReader(s));
		}
 
		public Scanner(FileReader r) {
			br = new BufferedReader(r);
		}
 
		public String next() throws IOException {
			while (st == null || !st.hasMoreTokens())
				st = new StringTokenizer(br.readLine());
			return st.nextToken();
		}
 
		public int nextInt() throws IOException {
			return Integer.parseInt(next());
		}
 
		public long nextLong() throws IOException {
			return Long.parseLong(next());
		}
 
		public String nextLine() throws IOException {
			return br.readLine();
		}
 
		public double nextDouble() throws IOException {
			return Double.parseDouble(next());
		}
 
		public int[] nextArr(int n) throws IOException {
			int[] arr = new int[n];
			for (int i = 0; i < arr.length; i++)
				arr[i] = nextInt();
			return arr;
		}
		public Integer[] nextsort(int n) throws IOException{
			Integer[] arr=new Integer[n];
			for(int i=0; i<n; i++) 
				arr[i]=nextInt();
			return arr;
		}
		public boolean ready() throws IOException {
			return br.ready();
		}
	}
	static class printer{
		PrintWriter pw;
		public printer() {
			pw=new PrintWriter(System.out);
		}
		public void print(String s) throws IOException{
			pw.print(s);
		}
		public void print(int s) throws IOException{
			pw.print(s);
		}
		public void print(long s) throws IOException{
			pw.print(s);
		}
		public void print(char s) throws IOException{
			pw.print(s);
		}
		public void print(Integer s) throws IOException{
			pw.print(s);
		}
		public void print(Long s) throws IOException{
			pw.print(s);
		}
		public void print(Character s) throws IOException{
			pw.print(s);
		}
		public void println(String s) throws IOException{
			pw.println(s);
		}
		public void println(int s) throws IOException{
			pw.println(s);
		}
		public void println(long s) throws IOException{
			pw.println(s);
		}
		public void println(char s) throws IOException{
			pw.println(s);
		}
		public void println(Integer s) throws IOException{
			pw.println(s);
		}
		public void println(Long s) throws IOException{
			pw.println(s);
		}
		public void println(Character s) throws IOException{
			pw.println(s);
		}
		public void println() throws IOException{
			pw.println();
		}
		public void println(int[] arr) throws IOException{
			for(int i=0; i<arr.length-1; i++)
				pw.print(arr[i]+" ");
			pw.println(arr[arr.length-1]);
		}
		public void println(Integer[] arr) throws IOException{
			for(int i=0; i<arr.length-1; i++)
				pw.print(arr[i]+" ");
			pw.println(arr[arr.length-1]);
		}
		public void println(long[] arr) throws IOException{
			for(int i=0; i<arr.length-1; i++)
				pw.print(arr[i]+" ");
			pw.println(arr[arr.length-1]);
		}
		public void println(Long[] arr) throws IOException{
			for(int i=0; i<arr.length-1; i++)
				pw.print(arr[i]+" ");
			pw.println(arr[arr.length-1]);
		}
		public void println(char[] arr) throws IOException{
			for(int i=0; i<arr.length-1; i++)
				pw.print(arr[i]+" ");
			pw.println(arr[arr.length-1]);
		}
		public void println(Character[] arr) throws IOException{
			for(int i=0; i<arr.length-1; i++)
				pw.print(arr[i]+" ");
			pw.println(arr[arr.length-1]);
		}
		public void println(ArrayList<Integer> arr) throws IOException{
			for(int i=0; i<arr.size()-1; i++)
				pw.print(arr.get(i)+" ");
			pw.println(arr.get(arr.size()-1));
		}
		public void println(TreeSet<Integer> arr) throws IOException{
			for(int x: arr) {
				pw.print(x+" ");
			}
		}
		public void close() throws IOException{
			pw.close();
		}
		public void flush() throws IOException{
			pw.flush();
		}
	}
	static class Pair implements Comparable<Pair>{
		int x;
		int y;
		public Pair(int a, int b) {
			this.x=a;
			this.y=b;
		}
		public int compareTo(Pair other) {
			return (this.y-other.y);
		}
	}
	static class Triple implements Comparable<Triple>{
		int x;
		int y;
		boolean d;
		public Triple(int a, int b, boolean t) {
			this.x=a;
			this.y=b;
			this.d=t;
		}
		public int compareTo(Triple other) {
			if(this.d && !other.d) {
				return 1;
			}else if(!this.d && other.d) {
				return -1;
			}else {
				return this.y-other.y;
			}
		}
	}
}