def add(self, val):
_lists = self._lists<EOL>_keys = self._keys<EOL>_maxes = self._maxes<EOL>key = self._key(val)<EOL>if _maxes:<EOL><INDENT>pos = bisect_right(_maxes, key)<EOL>if pos == len(_maxes):<EOL><INDENT>pos -= <NUM_LIT:1><EOL>_lists[pos].append(val)<EOL>_keys[pos].append(key)<EOL>_maxes[pos] = key<EOL><DEDENT>else:<EOL><INDENT>idx = bisect_right(_keys[pos], key)<EOL>_lists[pos].insert(idx, val)<EOL>_keys[pos].insert(idx, key)<EOL><DEDENT>self._expand(pos)<EOL><DEDENT>else:<EOL><INDENT>_lists.append([val])<EOL>_keys.append([key])<EOL>_maxes.append(key)<EOL><DEDENT>self._len += <NUM_LIT:1><EOL>
Add the element *val* to the list.