Please solve the programming task below using a self-contained code snippet in a markdown code block.

An array is squareful if the sum of every pair of adjacent elements is a perfect square.
Given an integer array nums, return the number of permutations of nums that are squareful.
Two permutations perm1 and perm2 are different if there is some index i such that perm1[i] != perm2[i].
 
Please complete the following python code precisely:
```python
class Solution:
    def numSquarefulPerms(self, nums: List[int]) -> int:
```