void findPath(ArrayList<MyToken> path, GraphNode node, int pri) {
        if (node.list.get(pri).endOfSentence) {
            MySentence newPath = new MySentence();
            for (MyToken token : path) {
                newPath.tokensList.add(token);
            }
            newPath.tokensList.add(node.list.get(pri));
            candidates.add(newPath);
        } else {
            MyToken token = node.list.get(pri);
            int index = path.size();
            path.add(index, token);
            for (GraphNode next : node.nextNodes) {
                for (int i = 0; i < next.list.size(); i++) {
                    MyToken nextToken = next.list.get(i);
                    if (nextToken.nSentence == token.nSentence && nextToken.nPosition > token.nPosition
                            && nextToken.nPosition < token.nPosition + M) {
//                        if (token.word.equals("đặc_biệt")) {
//                            System.out.println("df");
//                        }
                        findPath(path, next, i);
                    }
                }
            }
            path.remove(index);
        }
    }