sinterface IIntMemory64 { int get(long idx); default int read(long idx) { ret get(idx); } void set(long idx, int val); long size(); default int[] readArray(long start, int len) { int[] a = new[len]; for i to len: a[i] = get(start+i); ret a; } default int[] readArray(LongRange r) { ret readArray(r.start, toInt(r.length())); } default long getLong(long idx) { ret twoIntsToLong(get(idx), get(idx+1)); } default void setLong(long idx, long val) { set(idx, firstIntFromLong(val)); set(idx+1, secondIntFromLong(val)); } }