#include <iostream>
#include <functional>
#include <iterator>
#include <algorithm>
#include <string>
#include <list>
#include <vector>
#include <random>
int main() {
std::list<std::string> l{"Hello", "Stack", "Over", "flow", "!!"};
std::vector<std::reference_wrapper<std::string>> v(l.begin(), l.end());
std::random_device rd;
std::mt19937 generator(rd());
std::shuffle(v.begin(), v.end(), generator);
std::cout << "Original list:\n";
std::copy(l.begin(), l.end(), std::ostream_iterator<std::string>(std::cout, " "));
std::cout << "\nShuffled view:\n";
std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, " "));
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHJhbmRvbT4KCmludCBtYWluKCkgewoJc3RkOjpsaXN0PHN0ZDo6c3RyaW5nPiBseyJIZWxsbyIsICJTdGFjayIsICJPdmVyIiwgImZsb3ciLCAiISEifTsKICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8c3RkOjpzdHJpbmc+PiB2KGwuYmVnaW4oKSwgbC5lbmQoKSk7CiAgICBzdGQ6OnJhbmRvbV9kZXZpY2UgcmQ7CiAgICBzdGQ6Om10MTk5MzcgZ2VuZXJhdG9yKHJkKCkpOwogICAgc3RkOjpzaHVmZmxlKHYuYmVnaW4oKSwgdi5lbmQoKSwgZ2VuZXJhdG9yKTsKICAgIHN0ZDo6Y291dCA8PCAiT3JpZ2luYWwgbGlzdDpcbiI7CiAgICBzdGQ6OmNvcHkobC5iZWdpbigpLCBsLmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8c3RkOjpzdHJpbmc+KHN0ZDo6Y291dCwgIiAiKSk7CiAgICBzdGQ6OmNvdXQgPDwgIlxuU2h1ZmZsZWQgdmlldzpcbiI7CiAgICBzdGQ6OmNvcHkodi5iZWdpbigpLCB2LmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8c3RkOjpzdHJpbmc+KHN0ZDo6Y291dCwgIiAiKSk7Cn0=