// #include <cstdio>

// using namespace std;

// int main(){
//     for(int i = 1; i <= 100; i++){
//         int a;
//         scanf("%d", &a);
//         for(int j = 1; j <= a; j++){
//             printf("%d ", j);
//         }
//         if (a) printf("\n");
//     }
    
//     return 0;
// }
#include <iostream>

using namespace std;

int main(){
    int a;
    //scanf cin 同样会返回一个值当读到值的时候
    //scanf("%d", &x) != -1 读到这个符号就意味着结束 EOF 或者 -1 //这行有个等价写法也就是前面加 ~ //while(~scanf("%d", &x) ~位运算 以后讲
    while(cin >> a && a){//后端中 所有文件都有一个结束符也就是 EOF / -1 读到这个符号就意味着结束 结束了之后就会返回一个false 
    //cin 它是有返回值的所以直接写尽判断也可以
    // while(cin >> a, a) ,逗号表达式也可以等价
        // if(!a) break; && a 与这个写法等价且更方便
        for(int i = 1; i <= a; i++) cout << i << ' ';
        cout << endl;
    }
    // int x = 5;
    // int cnt = 0;
    // if (cnt != 0, x == 5)
    // cout << "!" << endl; //输出! 因为if条件判断看的是最后一个表达式的值所以第一个不满足也无所谓
    //for循环也有这个特点 for(int i = 0;false, i < 10; i++) 这个false允许存在 只会判断 i < 10
    //return 也有这个特点也就是取最后一个条件判断表达式 return x = 6, 0 最后返回的是0
    return 0;
    // c++里面的EOF 即文件结束是个常量 也就是 -1 可以 cout << EOF << endl
}