a:6:{i:0;s:11665:"				<div class="h1"><h1>Discover Andaman's Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.andamanswagat.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.andamanswagat.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Discover Andaman's 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">
						8 Nights / 9 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanswagat.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Discover Andaman's 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="60570"/>
						</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_12/352228/113998.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/352228/113998.jpg"  width="150" height="150"    alt="Discover Andaman's Tour" title="Discover Andaman's Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<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 Andaman
								</p>
								<p class="aj">Arrival at Port Blair in the morning/afternoon by flight and transfer to Hotel in Port Blair. Relax and rest at the hotel and after lunch visit the famous Cellular Jail* (Witness to freedom struggle). On the return spend some time at Water Sports Complex where you could indulge in some water activities at extra cost like Jet Ski, Banana Boat ride, Speed Boat Ride etc or simply sit by the sea. In the evening proceed to attend the enthralling Sound and Light Show (at 1800 hrs or 1900 Hrs, depending on light and sound show ticket availability) at Cellular Jail - where the heroic saga of the Indian freedom struggle is brought alive.</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 2:</b> Port Blair - City Tour, Ross Island & Chidiya Tapu
								</p>
								<p class="aj">After breakfast, start for a tour of places in & around Port Blair (City Tour) -Anthropological Museum, Fisheries (Marine) Museum, Naval Marine Museum (Samudrika) and market for local shopping - for shopping & souvenirs. After lunch visit Ross Island (Wednesday Closed) which is about 2 km east of Port Blair and can be reached by a short boat ride from Water Sports Complex (Ferry leaves at 1230 hrs and returns at 1430 hrs). The island is controlled by the Indian navy, which requires every visitor to sign in on entering. At 1530 hrs proceed to Chidiya Tapu located 30 kms away from Port Blair and also called the Sunset Point in Andaman’s (Hot Tea will be provided). Return back to hotel in the evening. Evening at Leisure.</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> Port Blair Diglipur (290 Km / 06 hour drive approximately)
								</p>
								<p class="aj">After Breakfast depart for Diglipur via Baratang Island, Rangat & Mayabunder. Reach Diglipur & overnight stay at Diglipur in Hotel Pristine.</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> Diglipur - Ross & Smith Island
								</p>
								<p class="aj">After a leisure breakfast, leave for a full day fun filled trip to Ross & Smith Beach. It is a must see Beach Paradise that mesmerizes you with its natural beauty. It consists of 2 different Islands connected by a sandbar during low tide. Do not forget to carry lot of drinking water, beach towels & packed lunch. Evening return to respective Hotel. Overnight stay at Diglipur.</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> Diglipur - Port Blair (290 Km / 06 hour drive approximately)
								</p>
								<p class="aj">Early morning after breakfast depart by car from Diglipur to Port Blair. Return from a nature rich trip and check-in to your Hotel in Port Blair. Evening is free for Shopping. Overnight Stay at Hotel in Port Blair.</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> Port Blair - Havelock
								</p>
								<p class="aj">Early morning departure (0600 hrs) ferry from Port Blair - Havelock. The ferry takes 2.5 hrs to reach Havelock. On arrival proceed to selected hotel and in the evening proceed to Beach No 7* (Radhanagar Beach) rated as the ‘Best Beach in Asia’ by Time Magazine(Local Hot Tea will be offered) (N/Ac Car/ Jeep will be provided for pickup and drop, time spent 2-3 hours).(Kindly inform hotel to provide packaged breakfast as the same is not included at Havelock)</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> Excursion to Elephant Beach
								</p>
								<p class="aj">(Car will come at 0800 hrs and please ensure you are ready as the boat will leave at 0830 hrs and it is a further 10 min drive away to the boat) Embark on the most memorable snorkelling trip, just 40 min by Boat this beach offers snorkelers calm blue shallow waters and is the perfect spot for beginner snorkelers. The boat goes right up to the beach and it’s so easy to slip on your gear and just start snorkelling. It’s also a great place to just spend the day lying on the beach and relaxing. The beach is very scenic with fallen trees and white sand giving the photographer some interesting shots. The reef here starts very close to shore at a depth of about 1 metre. The large reef is mostly made up of hard coral and has plenty of marine life. Note: Inclusive of snorkelling equipment and car pick up and drop to jetty. (The trip may be changed to light house subject to weather conditions and visibility) (Do note that in case guest is delayed for Elephant Beach No Refund will be offered if the boat has left)</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 8:</b> Havelock - Kala Pathar Beach - Port Blair
								</p>
								<p class="aj">Check out and after lunch visit to Kala Pathar Beach which involves a scenic drive. Return from Havelock Island in the evening ferry 1600 hrs/ 1630 hrs and transfer to hotel in Port Blair. The guest will arrive only in the evening. (Do note that all hotels on Havelock have a early morning check out time and late checkout is provided at the discretion of the hotel management)</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 9:</b> Departure
								</p>
								<p class="aj">Depart Port Blair with fond memories of these mesmerizing Islands.</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>
															</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. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanswagat.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Discover Andaman's 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="60570"/>
						</form>
						</div>
						
						";i:1;s:62:"Book Discover Andaman's Tour - 8 Nights / 9 Days Tour Packages";i:2;s:121:"book discover andaman's tour - 8 nights / 9 days tour packages, beach and islands tour packages, port blair tour packages";i:3;s:152:"Andaman Swagat offers Discover Andaman's Tour - 8 Nights / 9 Days tour package, budget Beach and Islands tour packages for Port Blair at exciting price.";i:4;s:405:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair"        
		                 },
		      "description": "",
		      "name": "Discover Andaman's Tour",
		      "telephone": "+91-9476028789"
		    }
		    </script>
			";i:5;N;}