#include <iostream>
 
 
struct test_t{
    int value;
 
    test_t(){
        std::cerr << __PRETTY_FUNCTION__ << '\n';
    }
 
 
    test_t(int&& val) : value{std::move(val)}{
        std::cerr << __PRETTY_FUNCTION__ << '\n';
    }
 
 
    test_t(const test_t& rhs) : value{rhs.value}{
        std::cerr << __PRETTY_FUNCTION__ << '\n';
    }
 
 
    test_t& operator= (const test_t& rhs){
        std::cerr << __PRETTY_FUNCTION__ << '\n';
        value = rhs.value;
        return *this;
    }
 
 
    test_t(test_t&& rhs) : value{std::move(rhs.value)}{
        std::cerr << __PRETTY_FUNCTION__ << '\n';
    }
 
 
    test_t& operator= (test_t&& rhs){
        std::cerr << __PRETTY_FUNCTION__ << '\n';
        value = std::move(rhs.value);
        return *this;
    }
 
    ~test_t(){
        std::cerr << __PRETTY_FUNCTION__ << '\n';
    }
};
 
 
#include <vector>
 
int main(){
    std::vector<test_t> container;
 
    for(int n=0; n!=3; ++n) {
        std::cout << n << '\n';
        container.emplace_back();
    }
}
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgoKCnN0cnVjdCB0ZXN0X3R7CiAgICBpbnQgdmFsdWU7CgogICAgdGVzdF90KCl7CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KCgogICAgdGVzdF90KGludCYmIHZhbCkgOiB2YWx1ZXtzdGQ6Om1vdmUodmFsKX17CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KCgogICAgdGVzdF90KGNvbnN0IHRlc3RfdCYgcmhzKSA6IHZhbHVle3Jocy52YWx1ZX17CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KCgogICAgdGVzdF90JiBvcGVyYXRvcj0gKGNvbnN0IHRlc3RfdCYgcmhzKXsKICAgICAgICBzdGQ6OmNlcnIgPDwgX19QUkVUVFlfRlVOQ1RJT05fXyA8PCAnXG4nOwogICAgICAgIHZhbHVlID0gcmhzLnZhbHVlOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCgogICAgdGVzdF90KHRlc3RfdCYmIHJocykgOiB2YWx1ZXtzdGQ6Om1vdmUocmhzLnZhbHVlKX17CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KCgogICAgdGVzdF90JiBvcGVyYXRvcj0gKHRlc3RfdCYmIHJocyl7CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgICAgICB2YWx1ZSA9IHN0ZDo6bW92ZShyaHMudmFsdWUpOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICB+dGVzdF90KCl7CiAgICAgICAgc3RkOjpjZXJyIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KfTsKCgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IG1haW4oKXsKICAgIHN0ZDo6dmVjdG9yPHRlc3RfdD4gY29udGFpbmVyOwoKICAgIGZvcihpbnQgbj0wOyBuIT0zOyArK24pIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgbiA8PCAnXG4nOwogICAgICAgIGNvbnRhaW5lci5lbXBsYWNlX2JhY2soKTsKICAgIH0KfQo=