import java.util.*; import java.util.zip.*; import java.util.List; import java.util.regex.*; import java.util.concurrent.*; import java.util.concurrent.atomic.*; import java.util.concurrent.locks.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.table.*; import java.io.*; import java.net.*; import java.lang.reflect.*; import java.lang.ref.*; import java.lang.management.*; import java.security.*; import java.security.spec.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.imageio.*; import java.math.*; class main { static List matrixToList(Matrix m) { if (m == null) return null; int w = m.getWidth(), h = m.getHeight(), n = w*h; return new RandomAccessAbstractList() { public int size() { return n; } public A get(int i) { return m.get(i % w, i / w); } public A set(int i, A val) { A old = m.get(i % w, i % h); m.set(i % w, i / w, val); return old; } }; } interface Matrix { public int getWidth(); public int getHeight(); public A get(int x, int y); public void set(int x, int y, A a); } abstract static class RandomAccessAbstractList extends AbstractList implements RandomAccess { } }