#include <algorithm>
#include <array>
#include <iostream>
#include <numeric>
#include <random>
#include <vector>

constexpr std::size_t seq_len = 16;
constexpr std::size_t num_balls = 52;

int main()      // this is not generalized for an odd sequence length
{
    auto generator = std::mt19937{ std::random_device{}() };
    
    auto balls = std::array<int, num_balls>{};
    std::iota(balls.begin(), balls.end(), 1);
    std::shuffle(balls.begin(), balls.end(), generator);

    auto sequence = std::vector<int>{ balls.begin(), balls.begin() + seq_len / 2 };

    std::shuffle(balls.begin(), balls.begin() + seq_len/2, generator);
    sequence.insert(sequence.end(), balls.begin(), balls.begin() + seq_len/2);

    for (auto ball : sequence)
        std::cout << ball << ' ';
}