#include<bits/stdc++.h>
using namespace std;
const int M=1000000007;
const int N=500010;
int main(){
	freopen("barrack.in","r",stdin);
	freopen("barrack.out","w",stdout);
	int n,m,er=1,u,v;
	cin>>n>>m;
	long long ans;
	for(int i=1;i<=m;i++){
		er*=2;
		er%=M;
	}
	ans=(er*n+1)%M;
	if(n==2){
		cout<<5;
		return 0;
	}
	for(int i=1;i<=n;i++){
		cin>>u>>v;
		add(u,v);
	}
	for(int i=1;i<m;i++){
		for(int j=1;j<=i;j++){
			int s=1;
			for(int k=m-j;k>0;k--){
				s*=2;
				s%=M;
			}
			ans+=s;
			ans%=M;
		}
	}
	cout<<ans;
	return 0;
}