// Path: src/main/java/org/extratrees/data/Array2D.java
// public interface Array2D {
// 	public double get(int row, int col);
// 	public int ncols();
// 	public int nrows();
// 	public Row getRow(int row);
// }


import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import org.extratrees.data.Array2D;
package org.extratrees;



public class FactorExtraTrees extends AbstractTrees<FactorBinaryTree, Integer> implements Serializable {
	private static final long serialVersionUID = 3625952360819832098L;
	
	transient int[] output;
	/** number of factors: */
	int nFactors;
	
	public FactorExtraTrees(int nFactors) {
		this.nFactors = nFactors;
	}

// Path: src/main/java/org/extratrees/data/Array2D.java
// public interface Array2D {
// 	public double get(int row, int col);
// 	public int ncols();
// 	public int nrows();
// 	public Row getRow(int row);
// }


// Path: src/main/java/org/extratrees/FactorExtraTrees.java
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import org.extratrees.data.Array2D;

package org.extratrees;



public class FactorExtraTrees extends AbstractTrees<FactorBinaryTree, Integer> implements Serializable {
	private static final long serialVersionUID = 3625952360819832098L;
	
	transient int[] output;
	/** number of factors: */
	int nFactors;
	
	public FactorExtraTrees(int nFactors) {
		this.nFactors = nFactors;
	}

	public FactorExtraTrees(Array2D input, int[] output) {