#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007LL

ll f[3010][3010];
int num[3010],n,m;

inline int rd()
{
	int x=0;char ch=getchar();
	for (;ch<'0'||ch>'9';ch=getchar());
	for (;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
	return x;
}

inline ll ksm(ll x,ll y) { ll res=1;for (;y;y>>=1,x=x*x%mod) if (y&1) res=res*x%mod;return res; }

const ll inv2=ksm(2,mod-2);

int main()
{
	n=rd();m=rd();
	for (int i=1;i<=n;i++) num[i]=rd();
	for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) f[i][j]=(num[i]>num[j]);
	ll hhh=ksm(2,m);
	while (m--)
	{
		int x=rd(),y=rd();
		f[x][y]=f[y][x]=(f[x][y]+f[y][x])*inv2%mod;
		for (int i=1;i<=n;i++)
		{
			if (i==x||i==y) continue;
			f[x][i]=f[y][i]=(f[x][i]+f[y][i])*inv2%mod;
			f[i][x]=f[i][y]=(f[i][x]+f[i][y])*inv2%mod;
		}
	}
	ll ans=0;
	for (int i=1;i<n;i++) for (int j=i+1;j<=n;j++) ans=(ans+f[i][j])%mod;
	printf("%lld\n",ans*hhh%mod);
	return 0;
}