public BitMatrix insert(BitMatrix M, int i, int j)
    {
      if (i+M.n>n || j+M.n>n)
        throw new Error("Insertion overflow");
      for (int r=0;r<M.n;r++)
      {
        BitSet src = M.m[r];
        BitSet trg = m[i+r];
        for (int c=0;c<M.n;c++)
          trg.set(c+j,src.get(c));
      }
      return this;
    }