public static void Main() {
		modshogun.init_shogun_with_defaults();
		int merges = 3;

		double[,] fm_train = Load.load_numbers("../data/fm_train_real.dat");

		RealFeatures feats_train = new RealFeatures(fm_train);
		EuclideanDistance distance = new EuclideanDistance(feats_train, feats_train);

		Hierarchical hierarchical = new Hierarchical(merges, distance);
		hierarchical.train();

		double[] out_distance = hierarchical.get_merge_distances();
		int[,] out_cluster = hierarchical.get_cluster_pairs();

	}
    public static void Main()
    {
        modshogun.init_shogun_with_defaults();
        int merges = 3;

        double[,] fm_train = Load.load_numbers("../data/fm_train_real.dat");

        RealFeatures      feats_train = new RealFeatures(fm_train);
        EuclideanDistance distance    = new EuclideanDistance(feats_train, feats_train);

        Hierarchical hierarchical = new Hierarchical(merges, distance);

        hierarchical.train();

        double[] out_distance = hierarchical.get_merge_distances();
        int[,] out_cluster = hierarchical.get_cluster_pairs();
    }
    internal static ArrayList run(int para)
    {
        modshogun.init_shogun_with_defaults();
        int merges = para;

        DoubleMatrix fm_train = Load.load_numbers("../data/fm_train_real.dat");

        RealFeatures feats_train = new RealFeatures(fm_train);
        EuclidianDistance distance = new EuclidianDistance(feats_train, feats_train);

        Hierarchical hierarchical = new Hierarchical(merges, distance);
        hierarchical.train();

        DoubleMatrix out_distance = hierarchical.get_merge_distances();
        DoubleMatrix out_cluster = hierarchical.get_cluster_pairs();

        ArrayList result = new ArrayList();
        result.Add(hierarchical);
        result.Add(out_distance);
        result.Add(out_cluster);
        modshogun.exit_shogun();
        return result;
    }