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
#include <bits/stdc++.h>
using namespace std;
int SET[100001] = {0};
int main() {
  int A, B;
  cin >> A >> B;
  int N = A + B + 1;
  if (A != 0) {
    int upunit = N / A;
    int addf = 1;
    int i = 1;
    for (; i <= A; i++) {
      if (addf > N) {
        break;
      }
      cout << addf << " ";
      SET[addf] = -1;
      addf += upunit;
    }
    if (addf != N) {
      SET[N] = -1;
      cout << N << " ";
    }
  }
  for (int i = N; i > 0; i--) {
    if (SET[i] == 0) {
      cout << i << " ";
    }
  }
  return 0;
}
