a:6:{i:0;s:13548:"				<div class="h1"><h1>6N/7D Spain Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.bellatours.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.bellatours.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>6N/7D Spain Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Madrid, Seville</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Starting From </td>
						<td class="p5px pl0px vat">
						INR 50550 Per Person						</td>
						</tr>
												<tr>
						<td class="b p5px dif w125px vat">Special Offer </td>
						<td class="p5px pl0px dif vat">Special Offer 	<br />
1st 50 people get BELLA TOURS bag.</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.bellatours.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="6N/7D Spain Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="92117"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_14/397488/158337.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/397488/158337.jpg"  height="150"  width="150"    alt="6N/7D Spain Tour" title="6N/7D Spain Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					2 Nights in Madrid with Breakfast<br />
2 Nights in Seville with Breakfast<br />
2 Nights in Barcelona with Breakfast<br />
Madrid Hop on hop off city tour<br />
Seville Hop on hop off city tour<br />
Barcelona Hop on hop off city tour<br />
Return airport transfers on SIC<br />
2nd Class Train Tickets (Madrid - Seville & Seville - Barcelona)<br />
{Note: - Kindly be on time for SIC transfer as coach will not wait for more than the confirmed pick up time and there will be no refund provided for missed transfers}Special Offer 	<br />
1st 50 people get BELLA TOURS bag.Airfare & Taxes<br />
Visa & Insurances charges<br />
Any up gradation in hotel room category<br />
Any meals other than specified above<br />
Any sightseeing other than mentioned above<br />
Any Entrance fees or Fees for video or camera permit<br />
Any item of personal nature like tips, laundry, telephone calls etc<br />
Service tax will be applicable on total invoice17-0731-12<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrive in Madrid
								</p>
								<p class="aj">Welcome to Spain. Arrive at airport and transfer to hotel for your stay. You have rest of day at leisure. Overnight stay in Madrid.</p>
								</td>
									<td class="p10px vat imgWidth150 w150px lh0">
									<div class="demo-wrap">
									<ul class="lsn m0px p0px" >
												<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc <? echo $p_class; ?>"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_14/397488/158337.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/397488/158337.jpg"  height="150"  width="150"    alt="6N/7D Spain Tour" title="6N/7D Spain Tour" /></a></p></div></li>
									</ul>
									</div>
									</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Madrid - Hop on hop off tour
								</p>
								<p class="aj">Today after breakfast proceed for hop on hop off tour. The funniest and easiest way to know the city on our double decker buses. With one ticket, you will be able to hop on and off the bus all day along the route of your choice or change to another, admiring the architectural and cultural magnificence of Madrid, with the commentaries offered through a headphones audio system in eleven different languages including English. The operational frequency, depending on the season of the year, ranges approximately between 8 and 15 minutes and every route takes about 80 min. The tour offers you 2 Hop-on Hop-off routes to customize your own tour of Madrid. Route number 1 (blue colour) covers the major sights of the city and the route number 2 (green colour) gives you easy access to many of Madrid's top museums, shops and attractions. Overnight stay in Madrid.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Madrid - Seville
								</p>
								<p class="aj">Today check out from hotel & proceed to Barcelona by train. Arrive & check in at hotel. Rest of the day is free for leisure. Overnight stay in Seville.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Seville - Hop on hop off tour
								</p>
								<p class="aj">Today after breakfast proceed for hop on hop off tour. Discover the sights of Seville while travelling on a double-decker bus and walking tour. This tour is operated by double decker buses you can make a route during one hour through more emblematic places of the city of Seville, with a commentary available in 15 different languages, which make possible to know the history, culture and heritage of the city, which origin goes back to Old Age, that s way this city is a cultures mixing. The route our buses includes the more emblematic areas of the city: starts next to the river, going to old Exposition of 1929, Parque de Mar a Luisa, Plaza de Espa a, continuing to the known Triana quartier, and coming in old Exposition of 1992 (nowadays Isla Magica). Before to come back to main bus stop, pass next to Basilica de la Macarena and Andalusian Parliament. Overnight stay in Seville.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Seville - Barcelona
								</p>
								<p class="aj">Today check out from hotel & proceed to Barcelona by train. Arrive & check in at hotel. Rest of the day is free for leisure. Overnight stay in Barcelona.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Barcelona - Hop on hop off tour
								</p>
								<p class="aj">After breakfast proceed for hop on hop off tour. Discover the sights of Barcelona while travelling on a double-decker bus.This tour is operated by double-decker open-top buses offering the most convenient way to discover the most interesting museums and attractive sights this exciting city has to offer. You can get on and off as many times as you wish at any of the 44 stops, combining the three routes within the same ticket. Overnight stay in Barcelona.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Barcelona- Departure
								</p>
								<p class="aj">After breakfast it’s time to check out.Transfer to the airport for your onward flight or back home.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>3 Star Hotel</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Transfers</li>
																		<li>Airport Pickup-Drop</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Airfare & Taxes</li><li>
Visa & Insurances charges</li><li>
Any up gradation in hotel room category</li><li>
Any meals other than specified above</li><li>
Any sightseeing other than mentioned above</li><li>
Any Entrance fees or Fees for video or camera permit</li><li>
Any item of personal nature like tips, laundry, telephone calls etc</li><li>
Service tax will be applicable on total invoice</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~						
    	<p class="h dif xlarge b mb5px">Hotel Details:-</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">City</td>
				<td class="headHr p5px b">Standard</td>
				<td class="headHr p5px b">Deluxe</td>
			</tr>
			<tr>
				<td class="data p5px">Madrid</td>
				<td class="data p5px">T3 Tirol / Puerta De Toledo or similar</td>
				<td class="data p5px">Mercure Madrid Plaza De Espana/ Paseo Del Arte  or similar</td>
			</tr>
			<tr>
				<td class="data p5px">Seville</td>
				<td class="data p5px">Derby or similar</td>
				<td class="data p5px">Novotel/ Tryp Macarena or similar</td>
			</tr>
			<tr>
				<td class="data p5px">Barcelona</td>
				<td class="data p5px">Rialto/Atlantis By At bcn or similar</td>
				<td class="data p5px">Novotel Barcelona city/ Tryp Barcelona Apolo or similar</td>
			</tr>
		</table></div><br>
    	<p class="h dif xlarge b mb5px">Price per person in EUR:-</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">Category</td>
				<td class="headHr p5px b">Twin</td>
				<td class="headHr p5px b">Single</td>
			</tr>
			<tr>
				<td class="data p5px">Standard</td>
				<td class="data p5px">674</td>
				<td class="data p5px">992</td>
			</tr>
			<tr>
				<td class="data p5px">Deluxe</td>
				<td class="data p5px">739</td>
				<td class="data p5px">1145</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.bellatours.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="6N/7D Spain Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="92117"/>
						</form>
						</div>
						
						";i:1;s:55:"Book 6N/7D Spain Tour - 6 Nights / 7 Days Tour Packages";i:2;s:110:"book 6n/7d spain tour - 6 nights / 7 days tour packages, heritage tour packages, madrid, seville tour packages";i:3;s:138:"Bella Tours offers 6N/7D Spain Tour - 6 Nights / 7 Days tour package, budget Heritage tour packages for Madrid, Seville at exciting price.";i:4;s:1279:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Madrid, Seville"        
		                 },
		      "description": "2 Nights in Madrid with Breakfast
2 Nights in Seville with Breakfast
2 Nights in Barcelona with Breakfast
Madrid Hop on hop off city tour
Seville Hop on hop off city tour
Barcelona Hop on hop off city tour
Return airport transfers on SIC
2nd Class Train Tickets (Madrid - Seville & Seville - Barcelona)
{Note: - Kindly be on time for SIC transfer as coach will not wait for more than the confirmed pick up time and there will be no refund provided for missed transfers}Special Offer 	
1st 50 people get BELLA TOURS bag.Airfare & Taxes
Visa & Insurances charges
Any up gradation in hotel room category
Any meals other than specified above
Any sightseeing other than mentioned above
Any Entrance fees or Fees for video or camera permit
Any item of personal nature like tips, laundry, telephone calls etc
Service tax will be applicable on total invoice17-0731-12",
		      "name": "6N/7D Spain Tour",
		      "telephone": "+91-9819406969"
		    }
		    </script>
			";i:5;N;}