46void show_vector(vector<T> v) {
57vector<T> three_way_merge(vector<T> v1,
64 T v1_head = v1.front();
66 T v2_head = v2.front();
68 T v3_head = v3.front();
70 vector<T> prefix {v1_head, v2_head, v3_head};
71 vector<T> tail = three_way_merge(v1, v2, v3);
72 prefix.insert(prefix.end(), tail.begin(), tail.end());
83vector<T> deterministic_reorder_once(vector<T> v) {
87 v1.erase(v1.begin() + s2, v1.end());
89 v2.erase(v2.begin(), v2.begin() + s2);
90 v2.erase(v2.end() - s2, v2.end());
92 v3.erase(v3.begin(), v3.end() - s2);
93 return three_way_merge<T>(v3, v1, v2);
99vector<T> deterministic_reorder_n_times(vector<T> v,
size_t n) {
100 for (
size_t i = 0; i < n; i++)
101 v = deterministic_reorder_once(v);