#include<bits/stdc++.h>

int main()
{
    std::vector<int> a(3, 0);
    a[1] = 1;
    int n;
    std::cin >> n;
    for(int i = 0; i < n; i++)
    {
        for(int j = 1; j <= a.size() - 2; j++)
        {
            std::cout << a[j];
            if(j < a.size() - 2)
            {
                std::cout << " ";
            }
            else
            {
                std::cout << "\n";
            }
        }
        std::vector<int> b = a;
        for(int j = 1; j <= a.size() - 1; j++)
        {
            a[j] = b[j] + b[j - 1];
        }
        a.push_back(0);
    }
    return 0;
}

主要思路就是让数组始终多出一个为0的位,这样可以保证每次输出时最后一位一直为1。