#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
const vector<int> v = { 100, 110, 120, 6, 6, 6, 2, 2, 7 };
vector<int> dynamicTable(v.size());
for (int i = v.size() - 1; i >= 0; --i) {
for (int j = i + 1; j < v.size(); ++j) {
if (v[i] <= v[j]) {
dynamicTable[i] = max(dynamicTable[j], dynamicTable[i]);
}
}
++dynamicTable[i];
}
cout << *max_element(cbegin(dynamicTable), cend(dynamicTable)) << endl;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJY29uc3QgdmVjdG9yPGludD4gdiA9IHsgMTAwLCAxMTAsIDEyMCwgNiwgNiwgNiwgMiwgMiwgNyB9OwoJdmVjdG9yPGludD4gZHluYW1pY1RhYmxlKHYuc2l6ZSgpKTsKCglmb3IgKGludCBpID0gdi5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewoJCWZvciAoaW50IGogPSBpICsgMTsgaiA8IHYuc2l6ZSgpOyArK2opIHsKCQkJaWYgKHZbaV0gPD0gdltqXSkgewoJCQkJZHluYW1pY1RhYmxlW2ldID0gbWF4KGR5bmFtaWNUYWJsZVtqXSwgZHluYW1pY1RhYmxlW2ldKTsKCQkJfQoJCX0KCQkrK2R5bmFtaWNUYWJsZVtpXTsKCX0KCgljb3V0IDw8ICptYXhfZWxlbWVudChjYmVnaW4oZHluYW1pY1RhYmxlKSwgY2VuZChkeW5hbWljVGFibGUpKSA8PCBlbmRsOwp9