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 {
}
}