#include <iostream>
#include <cassert>
using namespace std;
using uint = unsigned int;
struct Array { uint length; };
void test1() {
cout << "test1" << endl;
Array array = {1000};
uint startIndex = 100;
uint length = 0xFFFFFFF0;
assert(0 <= startIndex && startIndex + length <= array.length);
cout << "array.length = " << array.length << endl
<< "startIndex = " << startIndex << endl
<< "length = " << length << endl
<< "startIndex + length = " << (startIndex + length) << endl;
}
void test2() {
cout << "test2" << endl;
Array array = {1000};
uint startIndex = 0xFFFFFFF0;
uint length = 100;
assert(0 <= startIndex && startIndex + length <= array.length);
cout << "array.length = " << array.length << endl
<< "startIndex = " << startIndex << endl
<< "length = " << length << endl
<< "startIndex + length = " << (startIndex + length) << endl;
}
int main() {
test1();
test2();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2Fzc2VydD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyB1aW50ID0gdW5zaWduZWQgaW50OwoKc3RydWN0IEFycmF5IHsgdWludCBsZW5ndGg7IH07Cgp2b2lkIHRlc3QxKCkgewoJY291dCA8PCAidGVzdDEiIDw8IGVuZGw7CgkKCUFycmF5IGFycmF5ID0gezEwMDB9OwoJdWludCBzdGFydEluZGV4ID0gMTAwOwoJdWludCBsZW5ndGggPSAweEZGRkZGRkYwOwoJCglhc3NlcnQoMCA8PSBzdGFydEluZGV4ICYmIHN0YXJ0SW5kZXggKyBsZW5ndGggPD0gYXJyYXkubGVuZ3RoKTsKCQoJY291dCA8PCAiYXJyYXkubGVuZ3RoID0gIiA8PCBhcnJheS5sZW5ndGggPDwgZW5kbAoJICAgICA8PCAic3RhcnRJbmRleCA9ICIgICA8PCBzdGFydEluZGV4ICAgPDwgZW5kbAoJICAgICA8PCAibGVuZ3RoID0gIiAgICAgICA8PCBsZW5ndGggICAgICAgPDwgZW5kbAoJICAgICA8PCAic3RhcnRJbmRleCArIGxlbmd0aCA9ICIgPDwgKHN0YXJ0SW5kZXggKyBsZW5ndGgpIDw8IGVuZGw7CgkKfQoKdm9pZCB0ZXN0MigpIHsKCWNvdXQgPDwgInRlc3QyIiA8PCBlbmRsOwoJCglBcnJheSBhcnJheSA9IHsxMDAwfTsKCXVpbnQgc3RhcnRJbmRleCA9IDB4RkZGRkZGRjA7Cgl1aW50IGxlbmd0aCA9IDEwMDsKCQoJYXNzZXJ0KDAgPD0gc3RhcnRJbmRleCAmJiBzdGFydEluZGV4ICsgbGVuZ3RoIDw9IGFycmF5Lmxlbmd0aCk7CgkKCWNvdXQgPDwgImFycmF5Lmxlbmd0aCA9ICIgPDwgYXJyYXkubGVuZ3RoIDw8IGVuZGwKCSAgICAgPDwgInN0YXJ0SW5kZXggPSAiICAgPDwgc3RhcnRJbmRleCAgIDw8IGVuZGwKCSAgICAgPDwgImxlbmd0aCA9ICIgICAgICAgPDwgbGVuZ3RoICAgICAgIDw8IGVuZGwKCSAgICAgPDwgInN0YXJ0SW5kZXggKyBsZW5ndGggPSAiIDw8IChzdGFydEluZGV4ICsgbGVuZ3RoKSA8PCBlbmRsOwoJCn0KCgppbnQgbWFpbigpIHsKCXRlc3QxKCk7Cgl0ZXN0MigpOwoJcmV0dXJuIDA7Cn0=