#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
struct Node {
int value;
Node* next;
};
int n;
Node* creatList(Node* &head, int n) {
Node* p = head;
for(int i = 2; i <= n; i++) {
Node* temp = new Node();
temp->value = i;
p->next = temp;
p = p->next;
}
p->next = head;
return p;
}
void del(Node* x) {
Node* temp = x->next;
x->next = temp->next;
delete temp;
temp = 0;
}
bool flag(int k) {
if(!((k+1) & k)) {
return true;
}
return false;
}
int main() {
while(cin >> n) { /// n >= 1;
Node* root = new Node();
root->value = 1;
Node* tail = creatList(root, n);
Node* p = tail;
int k = 0, cnt = 0;
while(p) {
if(flag(k)) {
cout << p->next->value << ' ';
del(p);
cnt++;
}
else {
p = p->next;
}
++k;
if(cnt == n) {
cout << endl;
break;
}
}
}
return 0;
}