//package Qy import java.util.* import java.math.* import java.lang.Math.* import java.nio.IntBuffer private val readString: ()->String = {readLine()!!} private val readInt: ()->Int = {readLine()!!.toInt()} private val readLong: ()->Long = {readLine()!!.toLong()} private val readIntArray: ()->IntArray = {readLine()!!.split(' ').map{it.toInt()}.toIntArray()} private val readLongArray: ()->LongArray = {readLine()!!.split(' ').map{it.toLong()}.toLongArray()} private val errPrintln: (String)->Unit = {msg -> System.err.println(msg)} private val MOD = 1e9.toLong()+7 private val INF = Int.MAX_VALUE/2 private val LINF = Long.MAX_VALUE/2 private fun permutation(A: IntArray): List { val ary = A.sorted() val N = ary.size val used = BooleanArray(N){false} val hm = HashMap() val ptn = ArrayList(0) fun dfs(n: Int) { if (n >= N) { val value = ptn.toIntArray() val key = IntBuffer.wrap(value) hm[key] = value } for (i in 0 until N) { if (used[i]) continue used[i] = true ptn.add(ary[i]) dfs(n+1) ptn.removeAt(ptn.lastIndex) used[i] = false } } dfs(0) val res = ArrayList() for (key in hm.keys.sorted()) { res.add(hm[key]!!) } return res.toList() } private fun solveY(A: IntArray, B: IntArray): Double { val a = A.sorted() val bPatterns = permutation(B) var aWin = 0 for (bPattern in bPatterns) { var aw = 0; var bw = 0; var draw = 0 a.forEachIndexed { i, v -> if (v > bPattern[i]) aw++ else if (v < bPattern[i]) bw++ else draw++ } if (aw > bw) aWin++ } return aWin.toDouble() / bPatterns.size } fun main(args: Array) { val N = readInt() val A = readIntArray() val B = readIntArray() val ans = solveY(A, B) println("%.8f".format(ans)) }