Go: package main

import (
	"fmt"
	"bufio"
	"os"
	"strconv"
	"strings"
)

var sc = bufio.NewScanner(os.Stdin)

func nextLine() string {
	sc.Scan()
	return sc.Text()
}

func nextLineInt() []int {
	arr := strings.Split(nextLine(), " ")
	var ret []int
	for _, v := range arr {
		x, _ := strconv.Atoi(v)
		ret = append(ret, x)
	}
	return ret
}

func main() {
	cin := nextLineInt()
	F := cin[0]
	fmt.Println((F-30)/2)
}

C++: #include<iostream>
using namespace std;


int F,C;

int main(){
cin>>F;
C = (F-30)/2;
cout<< C <<endl;

return 0;
}

C++: #include <iostream>
using namespace std;
int main(void){
    
    int F;
    cin >> F;
    cout << (F-30)/2 << endl;
    
    
}

C++: #include <iostream>
using namespace std;

int main() {
	int f; cin >> f; cout << (f - 30) / 2 << endl;
	return 0;
}

C++: #include <iostream>
using namespace std;
int main(void){
   int a;
   cin>>a;
   cout<<(a-30)/2<<endl;
    
}

C++: #include "bits/stdc++.h"

using namespace std;

int main()
{
    int f;
    cin >> f;
    cout << (f-30)/2<< endl;
    return 0;
}

C++: #include <bits/stdc++.h>

using namespace std;

int main() {
    int f;
    cin >> f;
    cout << (f - 30) / 2 << '\n';
}

C++: #include <iostream>
using namespace std;
int main(void){

int C,F;

cin >>F;

C=(F-30)/2;

cout<<C<<endl;
}

C++: 
#include <iostream>
using namespace std;
int main(){
int C,F;
cin>>F;
C=(F-30)/2;
cout<<C<<endl;

return 0;
}

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

//template
#define rep(i,a,b) for(int i=(a);i<(b);i++)
#define rrep(i,a,b) for(int i=(a);i>(b);i--)
#define ALL(v) (v).begin(),(v).end()
typedef long long int ll; typedef pair<ll, ll> P;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
template<typename A,size_t N,typename T>void Fill(A(&array)[N],const T &val){fill((T*)array, (T*)(array+N), val);}
const int inf = INT_MAX / 2; const ll INF = LLONG_MAX / 2;
//template end



int main(){
    int f; scanf("%d",&f);
    printf("%d\n",(f-30)/2);
    return 0;
}

C++: #include<cstdio>
using namespace std;

int main() {
  int a;
  scanf("%d", &a);
  printf("%d\n", a / 2 - 15);
}

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

int main(){
  int F;

  cin>>F;
  cout<<( F - 30 ) / 2 <<endl;
  return 0;
}

C++: #include <bits/stdc++.h>

using namespace std;

int main() {
	int f;

	cin >> f;
	cout << ((f - 30) >> 1) << endl;

	return 0;
}

C++: #include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int F;
	cin>>F;
	cout<<(F-30)/2<<endl;
	
	return 0;
}

C++: #include <iostream>
using namespace std;
int main(void){
    int f; cin >> f;
    
    cout << ( f - 30 ) / 2 << endl;
}

C++: #include <iostream>
using namespace std;
int main(){

int F,C;
cin >> F;
C = (F-30)/2;
cout << C << endl;





}

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

int main (){
  int  F;
  cin>>F;
  cout<< (F - 30) / 2<<endl;

  return 0;
}

C++: #include<iostream>
using namespace std;
int main(){

int F,C;
cin>>F;
C=(F-30)/2;
cout<<C<<endl;

return 0;

}

C++: //yukicoder@cpp14
//author:luckYrat(twitter:@luckYrat_)
//<ここに一言>

//せんげん！
#include <iostream>

#include <cmath>
#include <algorithm>
#include <iomanip>

#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <map>
#include <bitset>

#include <cctype>
#include <utility>
#include <climits>


//なまえくーかん！
using namespace std;
using ll = long long;
using P = pair<ll,ll>;

//てーすう！
const int mod = 1000000007;
const int inf = (1<<30)-1;
const ll linf = (1LL<<62LL)-1;
const double EPS = (1e-10);

//でふぁいん！
#define anyfill(n,s) setw(n) << setfill(s)
#define loop(s) for(int i = 0; s > i; i++)
#define rep(i,q) for(int i = 0; (q) > i; i++)
#define repp(i,n,q) for(int i = n; (q) > i; i++)
#define dep(i,q) for(int i = (q); 0 < i; i--)

//みじかく！
#define pb push_back
#define fir first
#define scn second
#define ednl endl

//いぇすのー！
#define YesNo(a) (a?"Yes":"No")
#define YESNO(a) (a?"YES":"NO")
#define yesno(a) (a?"yes":"no")

//きんぼーnほーこー！！
P ar4[4] = {{0,1},{0,-1},{1,0},{-1,0}};
P ar8[8] = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
/*
確認ポイント
cout << fixed << setprecision(n) << 小数計算//n桁の小数表記になる

計算量は変わらないが楽できるシリーズ
min(max)_element(iter,iter)で一番小さい(大きい)値のポインタが帰ってくる
count(iter,iter,int)でintがiterからiterの間にいくつあったかを取得できる
*/
template <typename T>
T gcd(T a,T b){
  if(a%b==0)return b;
  else return gcd(b,a%b);
}
template <typename T>
T lcm(T a,T b){
  return a/gcd(a,b)*b;
}
int dp[200][200];
struct z{
	int a,b,c;
};
__attribute__((constructor))
void initial() {
 cin.tie(0);
 ios::sync_with_stdio(false);
}
int main(){
	int f;cin>>f;
	cout << (f-30)/2 << endl;
	
}

C++: #include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int n;
	cin >> n;
	cout << (n - 30) / 2 << endl;
	return 0;
}

C++: #include<bits/stdc++.h>
using namespace std;
int main(){
  int x;
  cin>>x;
  cout<<(x-30)/2<<endl;
  return 0;
}

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

int main(){
  int F;

  cin>>F;
  cout<<F/2-15<<endl;

  return 0;
}

C++: #include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<unordered_set>
#include<unordered_map>
using namespace std;
typedef long long ll;
#define mod 1000000007
#define mad(a,b) a=(a+b)%mod;

int main(){
  ll a;cin>>a;
  cout<<(a-30)/2<<endl;
  return 0;
}

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

int main(){
  int F;
  cin>>F;
  cout<< (F-30)/2 <<endl;
  return 0;
}

C++: #include <iostream>
using namespace std;

int main() {
  int f;
  cin >> f;
  cout << (f-30)/2 << endl;
}

C++: #include <bits/stdc++.h>
#define rep(i,n) for (long long i = 0; i < (n); ++i)
const int INF = 2147483647;//int max
const long long int MOD = 1000000007;
using namespace std;
using ll = long long;
using P = pair<int,int>;
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
//ミョ(-ω- ?)
int main() {
    int f;
    cin >> f;
    cout << (f-30)/2 << endl;
    return 0;
}

C++: #include <iostream>
#include <string>
#include <utility>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <iomanip>

using namespace std;

#define REP(i, n) for(ll i = 0;i < n;i++)
#define REPR(i, n) for(ll i = n;i >= 0;i--)
#define FOR(i, m, n) for(ll i = m;i < n;i++)
#define FORR(i, m, n) for(ll i = m;i >= n;i--)
#define REPO(i, n) for(ll i = 1;i <= n;i++)
#define ll long long
#define INF (ll)1 << 60
#define MINF (-1 * INF)
#define ALL(n) n.begin(),n.end()
#define MOD 1000000007
#define P pair<ll, ll>


int main() {
	ll n;
	cin >> n;
	cout << (n - 30) / 2 << endl;
}

C++: #include <iostream>
#include <algorithm>

using namespace std;

int main(){
  int f;
  cin >> f;

  cout << (f-30)/2 << endl;
  
  return 0;
}

C++: #include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <utility>
#include <numeric>
#include <array>
#include <cmath>
using namespace std;
//変数デバッグ
#define DEB(variable) cout << #variable << '=' << variable << endl

//for簡易表記(引数ミス防止)
#define FOR(LoopVariable,numberOFbegin,numberOFend) for (int LoopVariable = (numberOFbegin); (LoopVariable) < (numberOFend); (LoopVariable)++)
#define DEFOR(LoopVariable,numberOFbegin,numberOFend) for (int LoopVariable = (numberOFbegin); (LoopVariable) > (numberOFend); (LoopVariable)--)
#define REP(LoopVariable,numberOFend) for(int LoopVariable = 0;(LoopVariable)<(numberOFend);LoopVariable++)

constexpr long long int linf = numeric_limits<long long int>::max()-5;
constexpr int inf= numeric_limits<int>::max()-5;

int main(){

    int f;
    cin >> f;
    cout << (f - 30) / 2 << endl;
    return 0;
}

C++: #include<iostream>
using namespace std;
  
  
int F,C;
  
int main(){
cin>>F;
C = (F-30)/2;
cout<< C <<endl;
  
return 0;
}