template <typename Iter>
class range {
public:
range(Iter first, Iter last)
: first(first), last(last) {}
Iter begin() const { return first; }
Iter end() const { return last; }
private:
Iter first;
Iter last;
};
template <typename Iter>
range<Iter> make_range(Iter first, Iter last) { return { first, last }; }
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgogICAgY2xhc3MgcmFuZ2UgewogICAgcHVibGljOgogICAgICAgIHJhbmdlKEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCkKICAgICAgICA6IGZpcnN0KGZpcnN0KSwgbGFzdChsYXN0KSB7fQoKICAgICAgICBJdGVyIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gZmlyc3Q7IH0KICAgICAgICBJdGVyIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGxhc3Q7IH0KCiAgICBwcml2YXRlOgogICAgICAgIEl0ZXIgZmlyc3Q7CiAgICAgICAgSXRlciBsYXN0OwogICAgfTsKCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KICAgIHJhbmdlPEl0ZXI+IG1ha2VfcmFuZ2UoSXRlciBmaXJzdCwgSXRlciBsYXN0KSB7IHJldHVybiB7IGZpcnN0LCBsYXN0IH07IH0=