static boolean nextpHelper(List<Integer>A) {
        int n=A.size();
        int i=n-1;
        while (i>0&&A.get(i-1)>=A.get(i)) {
            --i;
        }
        if (--i<0)
            return false;
        int j=n-1;
        while (j>i&&A.get(j)<=A.get(i)) {
            --j;
        }
        Collections.swap(A, i, j);
        Collections.reverse(A.subList(i+1,n));
        return true;
    }