#include<bits/stdc++.h>
using namespace std;

const int mod = 1e9 + 7, i2 = (mod+1)>>1;

int dp[3000][3000],a[3000];

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int n,q;
	cin>>n>>q;
	for(int i=0;i<n;i++)
		cin>>a[i];
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			if(a[i]>a[j])
				dp[i][j]=1;
	for(int _=1;_<=q;_++){
		int x,y;
		cin>>x>>y;
		x--,y--;
		if(x>y)	swap(x,y);
		int xy = dp[x][y], yx = dp[y][x];
		for(int i=0;i<n;i++){
			dp[x][i]=dp[y][i]=1LL*(dp[x][i]+dp[y][i])*i2%mod;
			dp[i][x]=dp[i][y]=1LL*(dp[i][x]+dp[i][y])*i2%mod;
		}
		dp[x][y]=dp[y][x]=1LL*(xy+yx)*i2%mod;
	}
	long long int ans = 0;
	for(int i=0;i<n;i++)
		for(int j=i+1;j<n;j++)
			ans+=dp[i][j];
	ans%=mod;
	for(int i=0;i<q;i++)
		ans=ans*2%mod;
	cout<<ans<<endl;
}
