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