#include <bits/stdc++.h>
using namespace std;
void watchset_e(set<int> SET, int N) {
  set<int>::iterator ITERATOR = SET.begin();
  advance(ITERATOR, N);
  printf("Element in %dth = %d \n", N, *ITERATOR);
}
int SD() {
  int x;
  scanf("%d", &x);
  return x;
}
long long SLL() {
  long long x;
  scanf("%lld", &x);
  return x;
}
char SC() {
  char x;
  scanf("%c", &x);
  return x;
}
const int AKA = 1e6 + 5;
vector<int> prime;
long long notPrime[AKA];
void seive() {
  notPrime[0] = notPrime[1] = 1;
  for (int i = 2; i <= AKA - 5; ++i) {
    if (!notPrime[i]) prime.push_back(i);
    for (long long j = 1LL * i * i; j <= AKA - 5; j += i) notPrime[j] = 1;
  }
}
vector<int> divs;
void genDivs(int n) {
  for (int i = 1; i * i <= n; ++i) {
    if (n % i == 0) {
      divs.push_back(i);
      if (n / i != i) divs.push_back(n / i);
    }
  }
}
long long int n, MAAX, i, m, arr[200005], ar[200005], j, k, x, c = 1, z, t, d;
string st[200005];
map<string, int> Map;
int main() {
  int ACCEPTED = 1;
  ;
  while (ACCEPTED--) {
    cin >> n;
    j = n;
    while (c < j) {
      cout << c << " " << j << " ";
      c++;
      j--;
    }
    if (c == j) cout << c;
  }
  return 0;
}
