#pragma once

#include <vector>

namespace vector_wrap {
template<class Value>
struct SmartArray {
    std::vector<Value> arr;

    void insert(size_t i, const Value& v) {
        arr.insert(arr.begin() + i, v);
    }

    Value erase(size_t i) {
        Value ans = std::move(arr[i]);
        arr.erase(arr.begin() + i);
        return ans;
    }

    Value at(size_t i) {
        return arr.at(i);
    }

    size_t size() const {
        return arr.size();
    }
};
}
