#include <vector>
#include <iostream>

using namespace std;

vector<vector<int>> split(const vector<int>& v, size_t n)
{
    vector<vector<int>> r;
    for(size_t i = 0, S = v.size(), m = (S+n-1)/n; i < m; ++i)
        r.emplace_back(v.begin()+i*n,v.begin()+i*n+(i==m-1&&S%n?S%n:n));
    return r;
}

int main(int argc, char * argv[])
{
    for(auto a: split({1,2,3,4,5,6,7,8,9,10},3))
    {
        for(auto b: a) cout << b << "  ";
        cout << "\n";
    }
}
