public ArrayList<int[]> getPSemiFlows() {
        System.out.println(toString());
        System.out.println("----------------------------------------------------");

        for (int i = 0; i < numbOfRounds; i++) {
            MatrixRow subtractor = findFirstNotNullRow(i);
            if (subtractor == null) {
                System.out.println("ERROR");
                break;
            }
            System.out.println("SUBS " + (i + 1));
            int size = listOfRows.size();
            for (int j = 0; j < size; j++) {
                MatrixRow actualMR = listOfRows.get(j);
                if (!listOfRows.get(j).isCanceled() && actualMR.getIncidenceRow()[i] != 0 && subtractor != actualMR) {
                    System.out.println("odcitavam " + i + " " + j);
                    MatrixRow newRow = actualMR.substractRow(subtractor, i);
                    //System.out.println(i);
                    System.out.println(newRow);
                    listOfRows.add(newRow);
                }
            }
            System.out.println("----------------------------------------------------");
            System.out.println("koniec kola: " + i);
            subtractor.setCanceled(true);


        }
        ArrayList<int[]> pSemiFlws = new ArrayList<int[]>();
        for (MatrixRow mr : listOfRows) {
            if (!mr.isCanceled()) {
                pSemiFlws.add(mr.getpSemiflow());
                System.out.println(mr);
            }
        }
        return pSemiFlws;
    }