| 123456789101112131415161718 | 
							- func countArrangement(N int) (cnt int) {
 
- 	dfs(N, 1, 0, &cnt)
 
- 	return cnt
 
- }
 
- func dfs(N int, i int, used int, cnt *int) {
 
- 	if N < i {
 
- 		(*cnt)++
 
- 		return
 
- 	}
 
- 	for a := 1; a <= N; a++ {
 
- 		if mask := 1 << uint(a); used&mask == 0 && (a%i == 0 || i%a == 0) {
 
- 			used |= mask
 
- 			dfs(N, i+1, used, cnt)
 
- 			used ^= mask // Backtracking
 
- 		}
 
- 	}
 
- }
 
 
  |