Hiking club "Up the hill" just returned from a walk. Now they are trying to remember which hills they've just walked through.

It is known that there were N stops, all on different integer heights between 1 and N kilometers (inclusive) above the sea level. On the first day they've traveled from the first stop to the second stop, on the second day they've traveled from the second to the third and so on, and on the last day they've traveled from the stop N - 1 to the stop N and successfully finished their expedition.

They are trying to find out which heights were their stops located at. They have an entry in a travel journal specifying how many days did they travel up the hill, and how many days did they walk down the hill.

Help them by suggesting some possible stop heights satisfying numbers from the travel journal.

Input

In the first line there is an integer non-negative number A denoting the number of days of climbing up the hill. Second line contains an integer non-negative number B — the number of days of walking down the hill (A + B + 1 = N, 1 ≤ N ≤ 100 000).

Output

Output N space-separated distinct integers from 1 to N inclusive, denoting possible heights of the stops in order of visiting.

Examples

Input

0
1


Output

2 1 


Input

2
1

Output

1 3 4 2
import java.awt.*;
import java.io.*;
import java.math.*;
import java.util.*;
import java.util.Map.Entry;

import static java.lang.Math.*;

public class solver implements Runnable {
	final boolean ONLINE_JUDGE = System.getProperty("ONLINE_JUDGE") != null;
	BufferedReader in;
	PrintWriter out;
	StringTokenizer tok = new StringTokenizer("");

	boolean HasTokens() {
		while (!tok.hasMoreTokens()) {
			try {
				tok = new StringTokenizer(in.readLine());
			} catch (Exception e) {
				return false;
			}
		}
		return true;
	}

	String readString() throws IOException {
		return HasTokens() ? tok.nextToken() : null;
	}

	String readString(String delim) throws IOException {
		return HasTokens() ? tok.nextToken(delim) : null;
	}

	int readInt() throws IOException {
		return Integer.parseInt(readString());
	}

	long readLong() throws IOException {
		return Long.parseLong(readString());
	}

	double readDouble() throws IOException {
		return Double.parseDouble(readString());
	}

	char readChar() throws IOException {
		char val = 0;
		do {
			val = (char) in.read();
		} while (val == '\n' || val == '\r');
		return val;
	}

	// ----------------------------------
	int gcd(int x, int y) {
		while (y != 0) {
			int temp = x % y;
			x = y;
			y = temp;
		}
		return x;
	}

	// ----------------------------------

	public class Pair<T1, T2> {
		public T1 x1;
		public T2 x2;

		public Pair() {
		};

		public Pair(T1 x1, T2 x2) {
			this.x1 = x1;
			this.x2 = x2;
		}

		public String toString() {
			return x1 + ":" + x2;
		}
	}

	public class Three implements Comparable<Three> {
		public int x1, x2, x3;

		public Three() {
		}

		public Three(int a, int b, int c) {
			x1 = a;
			x2 = b;
			x3 = c;
		}

		public int compareTo(Three o) {//
			if (x1 == o.x1 && x2 == o.x2)
				return x3 - o.x3;
			if (x1 == o.x1)
				return x2 - o.x2;
			return (x1 - o.x1);
			// (x1-o.x1) - increase; -(x1-o.x1) - decrease
		}

		public String toString() {
			return x1 + ":" + x2 + ":" + x3;
		}
	}

	// ----------------------------------------
	
	
	void solve() throws NumberFormatException, IOException {
		int a = readInt();
		int b = readInt();
		int n = a + b + 1;
		int[] x = new int[n];
		for (int i=0;i<n;i++){
			x[i] = i+1;			
		}
		for (int i=0;i<b;i++){
			out.print((n-i)+" ");
		}
		for (int i=1;i<=a+1;i++){
			out.print(i+" ");
		}
		out.println();
		
	}
	

	// ----------------------------------------
	public static void main(String[] args) {
		new Thread(null, new solver(), "", 256 * (1L << 20)).start();
	}
	

	public void run() {
		try {
			timeBegin = System.currentTimeMillis();
			try {
				if (ONLINE_JUDGE) {
					in = new BufferedReader(new InputStreamReader(System.in));
					out = new PrintWriter(System.out);
					//in = new BufferedReader(new FileReader("exam.in"));
					//out = new PrintWriter("exam.out");
				} else {
					in = new BufferedReader(new FileReader("input.txt"));
					out = new PrintWriter("output.txt");
				}
			} catch (Throwable e) {
				in = new BufferedReader(new InputStreamReader(System.in));
				out = new PrintWriter(System.out);
			}
			solve();
			out.close();

			timeEnd = System.currentTimeMillis();
			if (!ONLINE_JUDGE)System.err.println("Time = " + (timeEnd - timeBegin));
		} catch (Exception e) {
			e.printStackTrace(System.err);
			System.exit(-1);
		}
	}
	
	Random r = new Random();

	long timeBegin, timeEnd;

	// ----------
}